1.pom配置,添加以來jar包

1 <dependency> 2 <groupId>org.springframework.cloud</groupId> 3 <artifactId>spring-cloud-starter-bus-amqp</artifactId> 4 </dependency>
2.配置文件配置

1 #RabbitMq 2 spring.rabbitmq.host=${dev.spring.rabbitmq.host} 3 spring.rabbitmq.port=${dev.spring.rabbitmq.port} 4 spring.rabbitmq.username=${dev.spring.rabbitmq.username} 5 spring.rabbitmq.password=${dev.spring.rabbitmq.password} 6 7 spring.rabbitmq.exchange=${dev.spring.rabbitmq.exchange} 8 spring.rabbitmq.routingkey=${dev.spring.rabbitmq.routingkey} 9 spring.rabbitmq.queue=${dev.spring.rabbitmq.queue}
3.rabbitmq消息發送一

1 @Autowired 2 private AmqpTemplate amqpTemplate; 3 //key:消息名稱;content:消息內容 4 public void send(String key,String content) { 5 amqpTemplate.convertAndSend(key, content); 6 }
4.rabbitmq消息接收一

1 @Component 2 @EnableScheduling 3 public class ClmNeedPaperMqReciever extends ClmBaseMqReciever { 4 /** 5 *RabbitListener:rabbitmq監聽;queues = "queues1":監聽的隊列名*稱;@Payload String orderXML:接收到的消息內容 6 */ 7 @RabbitHandler 8 @RabbitListener(queues = "queues1", containerFactory = "rabbitListenerContainerFactory") 9 public void process(@Payload String orderXML) { 10 11 //處理內容 12 }
5.rabbitmq發送二

1 String MQname ="ClmClose"; 2 ConnectionFactory factory = new ConnectionFactory(); 3 factory.setHost("129.1.9.193"); 4 factory.setUsername("admin"); 5 factory.setPassword("admin"); 6 factory.setPort(5672); 7 Connection connection; 8 try { 9 connection = factory.newConnection(); 10 Channel channel = connection.createChannel(); 11 channel.queueDeclare(MQname, true, false, false, null); 12 channel.basicPublish("", MQname, null, returnJSON.getBytes("UTF-8")); 13 channel.close(); 14 connection.close();
6.rabbitmq接收二

1 /* 建立連接 */ 2 ConnectionFactory factory = new ConnectionFactory(); 3 factory.setHost("129.1.9.193");// MQ的IP 4 factory.setPort(5672);// MQ端口 5 factory.setUsername("admin");// MQ用戶名 6 factory.setPassword("admin");// MQ密碼 7 Connection connection = factory.newConnection(); 8 Channel channel = connection.createChannel(); 9 10 /* 聲明要連接的隊列 */ 11 channel.queueDeclare(QUEUE_NAME, true, false, false, null); 12 System.out.println("等待消息產生:"); 13 14 /* 創建消費者對象,用於讀取消息 */ 15 QueueingConsumer consumer = new QueueingConsumer(channel); 16 channel.basicConsume(QUEUE_NAME, true, consumer); 17 18 /* 讀取隊列,並且阻塞,即在讀到消息之前在這里阻塞,直到等到消息,完成消息的閱讀后,繼續阻塞循環 */ 19 while (true) { 20 QueueingConsumer.Delivery delivery = consumer.nextDelivery(); 21 String message = new String(delivery.getBody(),"UTF-8"); 22 System.out.println("收到消息'" + message + "'"); 23 }
7.用接收一的方法去接收發送二的內容時需要轉換,否則會出現亂碼

1 @Component 2 @EnableScheduling 3 public class ClmNeedPaperMqReciever extends ClmBaseMqReciever { 4 5 /** 6 *RabbitListener:rabbitmq監聽;queues = "queues1":監聽的隊 7 *列名稱;@Payload String orderXML:接收到的消息內容 8 */ 9 @RabbitHandler 10 @RabbitListener(queues = "queues1", containerFactory = "rabbitListenerContainerFactory") 11 public void process(@Payload String orderXML) { 12 13 //處理內容 14 15 // 解析報文對象,將byte數組還原 16 String[] listStr = orderXML.split(","); 17 byte[] listByte = new byte[listStr.length]; 18 for (int i = 0; i < listStr.length; i++) { 19 listByte[i] = new Byte(listStr[i]); 20 } 21 orderXML = new String(listByte, "UTF-8"); 22 23 } 24 25