Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/master'
Browse files Browse the repository at this point in the history
# Conflicts:
#	pom.xml
  • Loading branch information
mechero committed Nov 5, 2018
2 parents c03236c + 04e048d commit 94b74d4
Show file tree
Hide file tree
Showing 3 changed files with 48 additions and 73 deletions.
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
package com.thepracticaldeveloper.rabbitmqconfig;

import java.io.Serializable;
import com.fasterxml.jackson.annotation.JsonProperty;

public final class CustomMessage implements Serializable{
import java.io.Serializable;

private String text;
private int priority;
private boolean secret;
public final class CustomMessage implements Serializable {

// Default constructor is needed to deserialize JSON
public CustomMessage() {
}
private final String text;
private final int priority;
private final boolean secret;

public CustomMessage(String text, int priority, boolean secret) {
public CustomMessage(@JsonProperty("text") String text,
@JsonProperty("priority") int priority,
@JsonProperty("secret") boolean secret) {
this.text = text;
this.priority = priority;
this.secret = secret;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;

Expand All @@ -16,7 +15,6 @@ public class CustomMessageSender {

private final RabbitTemplate rabbitTemplate;

@Autowired
public CustomMessageSender(final RabbitTemplate rabbitTemplate) {
this.rabbitTemplate = rabbitTemplate;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,86 +4,63 @@
import org.springframework.amqp.core.BindingBuilder;
import org.springframework.amqp.core.Queue;
import org.springframework.amqp.core.TopicExchange;
import org.springframework.amqp.rabbit.annotation.EnableRabbit;
import org.springframework.amqp.rabbit.annotation.RabbitListenerConfigurer;
import org.springframework.amqp.rabbit.connection.ConnectionFactory;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.amqp.rabbit.listener.RabbitListenerEndpointRegistrar;
import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.messaging.converter.MappingJackson2MessageConverter;
import org.springframework.messaging.handler.annotation.support.DefaultMessageHandlerMethodFactory;
import org.springframework.scheduling.annotation.EnableScheduling;

@SpringBootApplication
@EnableRabbit
@EnableScheduling
public class MessagingApplication implements RabbitListenerConfigurer {
public class MessagingApplication {

public static final String EXCHANGE_NAME = "appExchange";
public static final String QUEUE_GENERIC_NAME = "appGenericQueue";
public static final String QUEUE_SPECIFIC_NAME = "appSpecificQueue";
public static final String ROUTING_KEY = "messages.key";
public static final String EXCHANGE_NAME = "appExchange";
public static final String QUEUE_GENERIC_NAME = "appGenericQueue";
public static final String QUEUE_SPECIFIC_NAME = "appSpecificQueue";
public static final String ROUTING_KEY = "messages.key";

public static void main(String[] args) {
SpringApplication.run(MessagingApplication.class, args);
}
public static void main(String[] args) {
SpringApplication.run(MessagingApplication.class, args);
}

@Bean
public TopicExchange appExchange() {
return new TopicExchange(EXCHANGE_NAME);
}
@Bean
public TopicExchange appExchange() {
return new TopicExchange(EXCHANGE_NAME);
}

@Bean
public Queue appQueueGeneric() {
return new Queue(QUEUE_GENERIC_NAME);
}
@Bean
public Queue appQueueGeneric() {
return new Queue(QUEUE_GENERIC_NAME);
}

@Bean
public Queue appQueueSpecific() {
return new Queue(QUEUE_SPECIFIC_NAME);
}
@Bean
public Queue appQueueSpecific() {
return new Queue(QUEUE_SPECIFIC_NAME);
}

@Bean
public Binding declareBindingGeneric() {
return BindingBuilder.bind(appQueueGeneric()).to(appExchange()).with(ROUTING_KEY);
}
@Bean
public Binding declareBindingGeneric() {
return BindingBuilder.bind(appQueueGeneric()).to(appExchange()).with(ROUTING_KEY);
}

@Bean
public Binding declareBindingSpecific() {
return BindingBuilder.bind(appQueueSpecific()).to(appExchange()).with(ROUTING_KEY);
}
@Bean
public Binding declareBindingSpecific() {
return BindingBuilder.bind(appQueueSpecific()).to(appExchange()).with(ROUTING_KEY);
}

// You can comment all methods below and remove interface's implementation to use the default serialization / deserialization
@Bean
public RabbitTemplate rabbitTemplate(final ConnectionFactory connectionFactory) {
final var rabbitTemplate = new RabbitTemplate(connectionFactory);
rabbitTemplate.setMessageConverter(producerJackson2MessageConverter());
return rabbitTemplate;
}
// You can comment the two methods below to use the default serialization / deserialization (instead of JSON)
@Bean
public RabbitTemplate rabbitTemplate(final ConnectionFactory connectionFactory) {
final var rabbitTemplate = new RabbitTemplate(connectionFactory);
rabbitTemplate.setMessageConverter(producerJackson2MessageConverter());
return rabbitTemplate;
}

@Bean
public Jackson2JsonMessageConverter producerJackson2MessageConverter() {
return new Jackson2JsonMessageConverter();
}

@Bean
public MappingJackson2MessageConverter consumerJackson2MessageConverter() {
return new MappingJackson2MessageConverter();
}

@Bean
public DefaultMessageHandlerMethodFactory messageHandlerMethodFactory() {
var factory = new DefaultMessageHandlerMethodFactory();
factory.setMessageConverter(consumerJackson2MessageConverter());
return factory;
}

@Override
public void configureRabbitListeners(final RabbitListenerEndpointRegistrar registrar) {
registrar.setMessageHandlerMethodFactory(messageHandlerMethodFactory());
}
@Bean
public Jackson2JsonMessageConverter producerJackson2MessageConverter() {
return new Jackson2JsonMessageConverter();
}

}

0 comments on commit 94b74d4

Please sign in to comment.