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 / 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"
import com.tngtech.archunit.junit.AnalyzeClasses;
import com.tngtech.archunit.junit.ArchTest;
import com.tngtech.archunit.lang.ArchRule;
import static com.tngtech.archunit.library.Architectures.layeredArchitecture;
@AnalyzeClasses(packages = "br.com.helpdev.myapp")
class ArchitectureTest {
@ArchTest
@gbzarelli
gbzarelli / 0_custom_EntityPicker.md
Last active October 27, 2024 19:26
Backstage - Custom EntityPicker with Type Filter #helpdev-blog

Custom EntityPicker with Type filter

  • Create folder: packages/app/src/scaffolder/CustomEntityPickerExtension
  • Put files: CustomEntityPickerExtension.tsx and index.ts
  • Edit packages/app/src/App.tsx and insert:
[...]

import { CustomEntityPickerExtension } from './scaffolder/CustomEntityPickerExtension';
@gbzarelli
gbzarelli / gitlabPipe.js
Last active October 12, 2022 12:37
Backstage Action - Gitlab Pipeline: Start a new pipeline.
import { Gitlab } from '@gitbeaker/node';
import { createTemplateAction } from '@backstage/plugin-scaffolder-backend';
import { ScmIntegrationRegistry } from '@backstage/integration';
import { InputError } from '@backstage/errors';
import { parseRepoUrl } from './util';
export const createGitlabPipelineAction = (integrations: ScmIntegrationRegistry) =>
createTemplateAction<{
repoUrl: string;
branchName: string;
@gbzarelli
gbzarelli / 1)_template.js
Last active October 27, 2024 19:27
Backstage – Transformando e Reutilizando variáveis em seu template com uma action customizada #helpdev-blog
// The action
// path: packages/backend/src/plugins/scaffolder/actions
import { CatalogApi } from '@backstage/catalog-client';
import { parseEntityRef } from '@backstage/catalog-model';
import {
createTemplateAction,
} from '@backstage/plugin-scaffolder-backend';
@gbzarelli
gbzarelli / SendAndWait.java
Last active October 27, 2024 19:28
Java - Emitter send and wait #helpdev-blog
private final Emitter<MyObject> emitter;
@Override
public void sendingAndWait(final MyObject payload) {
final var future = new CompletableFuture<Void>();
final var message = Message.of(payload,
() -> success(future),
(reason) -> failure(future, reason));
emitter.send(message);
future.toCompletableFuture().join();