Skip to content

Instantly share code, notes, and snippets.

View gbzarelli's full-sized avatar
Coding...

Guilherme Biff Zarelli gbzarelli

Coding...
View GitHub Profile
@gbzarelli
gbzarelli / webhook.md
Last active October 27, 2024 20:58
Arquitetura - Distribuição de eventos com Kafka e Webhook #helpdev-blog

Distribuição de eventos com Kafka e Webhook

(o projeto: https://github.com/gbzarelli/events-distribution-platform)

O projeto events-distribution-platform tem como intuito validar uma arquitetura que seja capaz de distribuir eventos utilizando o Kafka como plataforma de Streamming e notificar clientes via Webhooks.

Os webhooks serão cadastrados em uma base NoSQL baseado em filtros de tipo de eventos, assim cada usuário (associado a uma organização) poderia ter diferentes tipos de filtros para notificar diferentes endereços.

Arquitetura

@gbzarelli
gbzarelli / gas_detect_mq2.c
Last active April 18, 2025 22:12
[Gas detect] Detector de Gás com Arduino + MQ2 #helpdev-blog
// Definição dos pinos
const int gasSensorPin = A3; // Pino analógico do sensor MQ-2
const int buzzerPin = 8; // Pino digital para o buzzer
// Definição do valor limite para acionar o buzzer (ajuste conforme necessário)
const int gasThreshold = 100;
const int maxGasLevel = 1023; // Valor máximo que o sensor pode ler (10 bits)
// Frequência mínima e máxima para o buzzer
const int minFrequency = 100; // Frequência mínima do buzzer em Hz
@AllArgsConstructor
public class ReshippingOrderUseCase {
private final OrderRepository orderRepository;
private final CustomerRepository customerRepository;
private final OrderRepository orderRepository;
private final ShippingProviderClient shippingProviderClient;
private final LogisticClient logisticsClient;
@gbzarelli
gbzarelli / ArquiteturaHexagonal.md
Last active October 26, 2024 20:16
Exemplo de implementação da Arquitetura Hexagonal com garantias por testes unitários #helpdev-blog

Arquitetura Hexagonal

A Arquitetura Hexagonal promove a modularidade, flexibilidade e manutenibilidade do código, permitindo que as mudanças nos componentes externos não afetem diretamente a lógica de negócios. Essa abordagem é especialmente útil em sistemas nos quais a evolução das regras de negócio é frequente, e a capacidade de adaptação a mudanças é crucial.

Estrutura

A estrutura proposta por Alister Cockburn em seu artigo, visa o isolamento da camada de aplicação (core do negócio) fornecendo portas para as implementações de entrada e saída da aplicação, para atender os padrões propostos pela arquitetura, usamos o seguinte modelo de estrutura para implementação

image

@gbzarelli
gbzarelli / Order.java
Last active November 21, 2023 18:35
Domain model - Rich Sample
// Remoção nas notações globais do Lombook, deixando-as específicas e garantindo mais imutablidade para o domínio
public class Order {
// Considere a criação de objetos usando static factory
//Static factory para a criação de uma nova Order:
public static Order create(final OrderId orderId, final List<Product> items, final BigDecimal orderAmount) {
return new Order(orderId, items, null, orderAmount);
}
@gbzarelli
gbzarelli / Order.java
Last active November 21, 2023 14:24
Domain model - Anemic Sample
@AllArgsConstructor
@Getter
@Setter
public class Order {
private String id;
private List<Product> items;
private Payment payment;
@gbzarelli
gbzarelli / RabbitmqConnectionConfig.java
Last active October 27, 2024 19:19
RabbitMQ - Graceful shutdown - Configure Shutdown timeout in rabbitmq #helpdev-blog
import org.springframework.amqp.rabbit.config.SimpleRabbitListenerContainerFactory;
import org.springframework.amqp.rabbit.connection.ConnectionFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.amqp.SimpleRabbitListenerContainerFactoryConfigurer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class RabbitmqConnectionConfig {
private final AmazonS3 amazonS3;
private final KafkaTemplate<String, String> kafkaTemplate;
private final RedisTemplate<String, Integer> redisTemplate;
public static final String DEFAULT_KEY = "default-key";
public static final String KAFKA_TOPIC = "kafka-topic";
public static final String CSV_DELIMITER = ";";
public void readFile(String file) {
final var s3Object = amazonS3.getObject("/file-reader-bucket", file);
@gbzarelli
gbzarelli / Kafka_with_KafkaUI__docker-compose.yaml
Last active October 27, 2024 19:25
Kafka - docker-compose with Kafka-UI #helpdev-blog
version: '3.5'
services:
zookeeper:
image: confluentinc/cp-zookeeper:7.2.1
hostname: zookeeper
container_name: zookeeper
ports:
- "2181:2181"