springboot10:集成RabbitMQ
来源:互联网 发布:物业管理需求什么软件 编辑:程序博客网 时间:2024/05/22 04:44
RabbitMQ是个非常牛掰的消息中间件,网上也有不少关于AMQP和RabbitMQ的介绍。今天,小编就来讲下怎么在springboot中集成RabbitMQ。我不喜欢废话,喜欢直接上代码:
1. pom.xml
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-messaging</artifactId>
<version>4.3.7.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-websocket</artifactId>
<version>4.3.7.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
<version>1.5.2.RELEASE</version>
</dependency>
这里,最重要的是spring-boot-starter-amqp这个package。
2. RabbitConfig.java
@Configuration
public class RabbitConfig {
public static final String EXCHANGE = "my-mq-exchange";
public static final String ROUTINGKEY1 = "queue_one_key1";
public static final String ROUTINGKEY2 = "queue_one_key2";
@Bean
public ConnectionFactory connectionFactory() {
CachingConnectionFactory connectionFactory =
new CachingConnectionFactory("127.0.0.1",5672);
connectionFactory.setUsername("guest");
connectionFactory.setPassword("guest");
connectionFactory.setVirtualHost("/");
connectionFactory.setPublisherConfirms(true);
return connectionFactory;
}
@Bean
public DirectExchange defaultExchange() {
return new DirectExchange(EXCHANGE, true, false);
}
@Bean
public Queue queue() {
return new Queue("hello", true);
}
@Bean
public Binding binding() {
return BindingBuilder.bind(queue()).to(defaultExchange()).with(RabbitConfig.ROUTINGKEY1);}
@Bean
public Queue queue1() {
return new Queue("queue_one1", true);
}
@Bean
public Binding binding1() {
return BindingBuilder.bind(queue1()).to(defaultExchange()).with(RabbitConfig.ROUTINGKEY2);
}
@Bean
public SimpleMessageListenerContainer messageContainer() {
SimpleMessageListenerContainer container =
new SimpleMessageListenerContainer(connectionFactory());
container.setQueues(queue());
container.setExposeListenerChannel(true);
container.setMaxConcurrentConsumers(1);
container.setConcurrentConsumers(1);
container.setAcknowledgeMode(AcknowledgeMode.MANUAL);
container.setMessageListener(new ChannelAwareMessageListener() {
public void onMessage(Message message, com.rabbitmq.client.Channel channel) throws Exception {
byte[] body = message.getBody();
System.out.println("Receive MSG : " + new String(body));
channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
}
});
return container;
}
@Bean
public SimpleMessageListenerContainer messageContainer2() {
SimpleMessageListenerContainer container =
new SimpleMessageListenerContainer(connectionFactory());
container.setQueues(queue1());
container.setExposeListenerChannel(true);
container.setMaxConcurrentConsumers(1);
container.setConcurrentConsumers(1);
container.setAcknowledgeMode(AcknowledgeMode.MANUAL);
container.setMessageListener(new ChannelAwareMessageListener() {
public void onMessage(Message message, com.rabbitmq.client.Channel channel) throws Exception {
byte[] body = message.getBody();
System.out.println("queue1 Receive MSG : " + new String(body));
channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
}
});
return container;
}
}
3. Controller.java
@RestController
public class SendController implements RabbitTemplate.ConfirmCallback{
private RabbitTemplate rabbitTemplate;
public SendController(RabbitTemplate rabbitTemplate){
this.rabbitTemplate = rabbitTemplate;
this.rabbitTemplate.setConfirmCallback(this);
}
@RequestMapping("send1")
public String send1(String msg){
String uuid = UUID.randomUUID().toString();
CorrelationData correlationId = new CorrelationData(uuid);
rabbitTemplate.convertAndSend(RabbitConfig.EXCHANGE, RabbitConfig.ROUTINGKEY1, msg,
correlationId);
return null;
}
@RequestMapping("send2")
public String send2(String msg){
String uuid = UUID.randomUUID().toString();
CorrelationData correlationId = new CorrelationData(uuid);
rabbitTemplate.convertAndSend(RabbitConfig.EXCHANGE, RabbitConfig.ROUTINGKEY2, msg,
correlationId);
return null;
}
public void confirm(CorrelationData correlationData, boolean ack, String cause) {
System.out.println(" CallBack id:" + correlationData);
if (ack) {
System.out.println("MSG Consumed Successfully");
} else {
System.out.println("MSG Consumed Failed:" + cause+"\n Please send again");
}
}
}
4. 测试
打开postman,输入:http://localhost:8080/send2?msg=bbbcccddd
- springboot10:集成RabbitMQ
- spring集成rabbitmq
- Spring集成rabbitMQ
- Spring集成RabbitMQ
- spring-boot 集成 rabbitmq
- Spring boot集成RabbitMQ
- spring集成rabbitmq
- spring boot集成rabbitmq
- Srpingboot集成RabbitMq
- SpringMVC集成RabbitMQ
- SpringBoot集成RabbitMQ
- Springboot集成RabbitMq
- Springboot集成RabbitMQ
- Spring Boot RabbitMQ 集成
- rabbitMQ与Spring集成
- spring-boot 集成 rabbitmq
- Spring Boot 集成RabbitMQ
- Spring Boot 集成RabbitMQ
- day47_maven
- css实现垂直居中
- 调试结构图
- React Native 基础篇之Navigator页面的跳转与数据的传递
- wpf中chart中y轴的title和y轴距离异常
- springboot10:集成RabbitMQ
- 二分图的最大匹配、完美匹配和匈牙利算法
- ubuntu16.04上配置与测试caffe(CPU)
- 让图片显示在最上面,从而不被下面的listview顶上去
- 进程间通信和线程同步结构图
- mamp pro破解方法
- 线程通信synchronized、clock、Blockingqueue
- java基础1
- HTTP请求报文和HTTP响应报文