springboot整合rabbitMQ--存储和读取队列
生产方
1.引入依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.amqp</groupId>
<artifactId>spring-rabbit-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
2.在配置在件中添加rabbit服务的信息
#rabbitmq的配置
#rabbit服务的IP地址
spring.rabbitmq.host=192.168.94.131
#rabbit服务的管理员账号密码
spring.rabbitmq.username=cjj
spring.rabbitmq.password=cjj
#rabbit服务的虚拟主机
spring.rabbitmq.virtual-host=/cjj
3.调用RabbitTemplate中发送消息的方法。
@SpringBootTest
class SpringbootRabbitmqApplicationTests {
@Autowired
private RabbitTemplate rabbitTemplate;
@Test
void contextLoads() {
rabbitTemplate.convertAndSend("topics_exchange","three.one","springboot整合了rabbitMQ");
}
}
4.生产方传送对象
需要json和对象互转的依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.62</version>
</dependency>
代码
@SpringBootTest
class SpringbootRabbitmqApplicationTests {
@Autowired
private RabbitTemplate rabbitTemplate;
@Test
void contextLoads() {
final HashMap<String, Object> mp = new HashMap<>();
mp.put("name","cjj");
mp.put("age","23");
final String string = JSON.toJSONString(mp);
rabbitTemplate.convertAndSend("topics_exchange","three.one",string);
}
}
消费方
1.依赖
与生产方相同
2.配置
与生产方相同
3.创建类---创建监听方法即可@RabbitListener
//交予spring容器管理
@Component
public class MyListener {
//queues监听的队列名
//监听topics_queue02队列,如果要监听多个,则需要使用,隔开
@RabbitListener(queues = {"topics-queues002"})
public void topics(Message message){
//把监听到的消息封装到message类对象中
final byte[] body = message.getBody();
String s = new String(body);
System.out.println("消息的内容是"+s);
}
}
4.接收对象类型
需要json和对象互转的依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.62</version>
</dependency>
代码
//交予spring容器管理
@Component
public class MyListener {
//queues监听的队列名
//监听topics_queue02队列,如果要监听多个,则需要使用,隔开
@RabbitListener(queues = {"topics-queues002"})
public void topics(Message message){
//把监听到的消息封装到message类对象中
final byte[] body = message.getBody();
String s = new String(body);
final JSONObject jsonObject = JSON.parseObject(s);
System.out.println("消息的内容是"+jsonObject);
}
}
springboot整合rabbitMQ--创建交换机和队列
定义一个配置类
@Configuration
public class RabbitConfig {
//定义交换机名称
public static final String EXCHANGE_NAME="topic_exchange003";
//创建交换机
@Bean
public Exchange exchange(){
final Exchange build = ExchangeBuilder.topicExchange(EXCHANGE_NAME).durable(true).build();
return build;
}
//创建队列
@Bean
public Queue queue(){
final Queue topic_queue003 = QueueBuilder.durable("topic_queue003").build();
return topic_queue003;
}
//绑定队列和交换机
@Bean
public Binding binding(){
final Binding noargs = BindingBuilder.bind(queue()).to(exchange()).with("cjj.#").noargs();
return noargs;
//如果交换机要绑定多个队列,需要再写一个bind方法
}
}