Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- spring.rabbitmq.host=localhost
- spring.rabbitmq.port=32770
- spring.rabbitmq.username=guest
- spring.rabbitmq.password=guest
- package name.configuration;
- import org.springframework.context.ConfigurableApplicationContext;
- import name.queue.Receiver;
- import org.springframework.amqp.core.Binding;
- import org.springframework.amqp.core.BindingBuilder;
- import org.springframework.amqp.core.Queue;
- import org.springframework.amqp.core.TopicExchange;
- import org.springframework.amqp.rabbit.connection.ConnectionFactory;
- import org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer;
- import org.springframework.amqp.rabbit.listener.adapter.MessageListenerAdapter;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Configuration;
- import org.springframework.stereotype.Component;
- import java.util.Arrays;
- @Component
- @Configuration
- public class RabbitConfig {
- public final static String queueName = "floors";
- public RabbitConfig(ConfigurableApplicationContext ctx) {
- this.printBeans(ctx);
- }
- @Bean
- Queue queue() {
- return new Queue(queueName, false);
- }
- @Bean
- TopicExchange exchange() {
- return new TopicExchange("test-exchange");
- }
- @Bean
- Binding binding(Queue queue, TopicExchange exchange) {
- return BindingBuilder.bind(queue).to(exchange).with(queueName);
- }
- @Bean
- SimpleMessageListenerContainer container(ConnectionFactory connectionFactory,
- MessageListenerAdapter listenerAdapter) {
- SimpleMessageListenerContainer container = new SimpleMessageListenerContainer();
- container.setConnectionFactory(connectionFactory);
- container.setQueueNames(queueName);
- container.setMessageListener(listenerAdapter);
- return container;
- }
- @Bean
- MessageListenerAdapter listenerAdapter(Receiver receiver) {
- return new MessageListenerAdapter(receiver, "receiveMessage");
- }
- // just added this to know which beans are loaded, called it from constructor to see
- // if RabbitConfig class is found by Spring at all
- private void printBeans(ConfigurableApplicationContext ctx) {
- String[] beanNames = ctx.getBeanDefinitionNames();
- Arrays.sort(beanNames);
- for (String beanName : beanNames) {
- System.out.println(beanName);
- }
- }
- }
- package name.queue;
- import org.springframework.stereotype.Component;
- import java.util.concurrent.CountDownLatch;
- @Component
- public class Receiver {
- private CountDownLatch latch = new CountDownLatch(1);
- public void receiveMessage(String message) {
- System.out.println("Received <" + message + ">");
- latch.countDown();
- }
- public CountDownLatch getLatch() {
- return latch;
- }
- }
- @SpringBootApplication
- public class Main {
- public static void main(String[] args) {
- SpringApplication app = new SpringApplication(Main.class);
- app.setWebEnvironment(false);
- ConfigurableApplicationContext appContext = app.run(args);
- name.tcp.TcpServer tcpServer = new name.tcp.TcpServer();
- }
- }
- package name;
- import name.tcp.TcpServer;
- import org.springframework.boot.SpringApplication;
- import org.springframework.boot.autoconfigure.SpringBootApplication;
- import org.springframework.boot.web.support.SpringBootServletInitializer;
- import org.springframework.context.ConfigurableApplicationContext;
- import java.io.IOException;
- @SpringBootApplication
- public class Main extends SpringBootServletInitializer {
- public static void main(String[] args) {
- ConfigurableApplicationContext app = SpringApplication.run(Main.class, args);
- TcpServer tcpServer = new TcpServer();
- System.out.println("starting TCP server from main");
- }
- }
- package name.queue;
- import java.util.concurrent.TimeUnit;
- import org.springframework.amqp.rabbit.core.RabbitTemplate;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.boot.CommandLineRunner;
- import org.springframework.context.ConfigurableApplicationContext;
- import org.springframework.stereotype.Component;
- import name.configuration.RabbitConfig;
- @Component
- public class Runner implements CommandLineRunner {
- private final RabbitTemplate rabbitTemplate;
- @Autowired
- public Runner(RabbitTemplate rabbitTemplate) {
- this.rabbitTemplate = rabbitTemplate;
- }
- @Override
- public void run(String... args) throws Exception {
- System.out.println("Sending message...");
- rabbitTemplate.convertAndSend(RabbitConfig.queueName, "Hello from RabbitMQ!");
- }
- }
Add Comment
Please, Sign In to add comment