Guest User

Untitled

a guest
Dec 18th, 2017
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.58 KB | None | 0 0
  1. spring.rabbitmq.host=localhost
  2. spring.rabbitmq.port=32770
  3. spring.rabbitmq.username=guest
  4. spring.rabbitmq.password=guest
  5.  
  6. package name.configuration;
  7.  
  8. import org.springframework.context.ConfigurableApplicationContext;
  9. import name.queue.Receiver;
  10. import org.springframework.amqp.core.Binding;
  11. import org.springframework.amqp.core.BindingBuilder;
  12. import org.springframework.amqp.core.Queue;
  13. import org.springframework.amqp.core.TopicExchange;
  14. import org.springframework.amqp.rabbit.connection.ConnectionFactory;
  15. import org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer;
  16. import org.springframework.amqp.rabbit.listener.adapter.MessageListenerAdapter;
  17. import org.springframework.context.annotation.Bean;
  18. import org.springframework.context.annotation.Configuration;
  19. import org.springframework.stereotype.Component;
  20.  
  21. import java.util.Arrays;
  22.  
  23. @Component
  24. @Configuration
  25. public class RabbitConfig {
  26.  
  27. public final static String queueName = "floors";
  28.  
  29. public RabbitConfig(ConfigurableApplicationContext ctx) {
  30. this.printBeans(ctx);
  31. }
  32.  
  33. @Bean
  34. Queue queue() {
  35. return new Queue(queueName, false);
  36. }
  37.  
  38. @Bean
  39. TopicExchange exchange() {
  40. return new TopicExchange("test-exchange");
  41. }
  42.  
  43. @Bean
  44. Binding binding(Queue queue, TopicExchange exchange) {
  45. return BindingBuilder.bind(queue).to(exchange).with(queueName);
  46. }
  47.  
  48. @Bean
  49. SimpleMessageListenerContainer container(ConnectionFactory connectionFactory,
  50. MessageListenerAdapter listenerAdapter) {
  51. SimpleMessageListenerContainer container = new SimpleMessageListenerContainer();
  52. container.setConnectionFactory(connectionFactory);
  53. container.setQueueNames(queueName);
  54. container.setMessageListener(listenerAdapter);
  55. return container;
  56. }
  57.  
  58. @Bean
  59. MessageListenerAdapter listenerAdapter(Receiver receiver) {
  60. return new MessageListenerAdapter(receiver, "receiveMessage");
  61. }
  62.  
  63. // just added this to know which beans are loaded, called it from constructor to see
  64. // if RabbitConfig class is found by Spring at all
  65. private void printBeans(ConfigurableApplicationContext ctx) {
  66. String[] beanNames = ctx.getBeanDefinitionNames();
  67. Arrays.sort(beanNames);
  68. for (String beanName : beanNames) {
  69. System.out.println(beanName);
  70. }
  71. }
  72.  
  73. }
  74.  
  75. package name.queue;
  76.  
  77. import org.springframework.stereotype.Component;
  78.  
  79. import java.util.concurrent.CountDownLatch;
  80.  
  81. @Component
  82. public class Receiver {
  83.  
  84. private CountDownLatch latch = new CountDownLatch(1);
  85.  
  86. public void receiveMessage(String message) {
  87. System.out.println("Received <" + message + ">");
  88. latch.countDown();
  89. }
  90.  
  91. public CountDownLatch getLatch() {
  92. return latch;
  93. }
  94. }
  95.  
  96. @SpringBootApplication
  97. public class Main {
  98.  
  99. public static void main(String[] args) {
  100. SpringApplication app = new SpringApplication(Main.class);
  101. app.setWebEnvironment(false);
  102. ConfigurableApplicationContext appContext = app.run(args);
  103. name.tcp.TcpServer tcpServer = new name.tcp.TcpServer();
  104. }
  105.  
  106. }
  107.  
  108. package name;
  109.  
  110. import name.tcp.TcpServer;
  111. import org.springframework.boot.SpringApplication;
  112. import org.springframework.boot.autoconfigure.SpringBootApplication;
  113. import org.springframework.boot.web.support.SpringBootServletInitializer;
  114. import org.springframework.context.ConfigurableApplicationContext;
  115.  
  116. import java.io.IOException;
  117.  
  118. @SpringBootApplication
  119. public class Main extends SpringBootServletInitializer {
  120.  
  121. public static void main(String[] args) {
  122. ConfigurableApplicationContext app = SpringApplication.run(Main.class, args);
  123. TcpServer tcpServer = new TcpServer();
  124. System.out.println("starting TCP server from main");
  125. }
  126.  
  127. }
  128.  
  129. package name.queue;
  130.  
  131. import java.util.concurrent.TimeUnit;
  132.  
  133. import org.springframework.amqp.rabbit.core.RabbitTemplate;
  134. import org.springframework.beans.factory.annotation.Autowired;
  135. import org.springframework.boot.CommandLineRunner;
  136. import org.springframework.context.ConfigurableApplicationContext;
  137. import org.springframework.stereotype.Component;
  138. import name.configuration.RabbitConfig;
  139.  
  140. @Component
  141. public class Runner implements CommandLineRunner {
  142.  
  143. private final RabbitTemplate rabbitTemplate;
  144.  
  145. @Autowired
  146. public Runner(RabbitTemplate rabbitTemplate) {
  147. this.rabbitTemplate = rabbitTemplate;
  148. }
  149.  
  150. @Override
  151. public void run(String... args) throws Exception {
  152. System.out.println("Sending message...");
  153. rabbitTemplate.convertAndSend(RabbitConfig.queueName, "Hello from RabbitMQ!");
  154. }
  155.  
  156. }
Add Comment
Please, Sign In to add comment