spring cloud bus

RabbitMQ

在docker中运行rabbitmq

docker run -d -p 5672:5672  -p 8080:15672 rabbitmq:3-management

浏览器打开:http://10.202.203.29:8080/

默认用户名/密码都是guest

在Admin页面添加用户

新添加的用户是没有权限的

点击用户名进去,按提示添加权限

这样就可以在程序中访问了。

 

创建spring boot 项目,添加pom依赖

复制代码
<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bus-amqp</artifactId>
        </dependency>
View Code
复制代码

添加发送类Sender

复制代码
import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.Date;
@Component
public class Sender {
    @Autowired
    private AmqpTemplate amqpTemplate;

    public void send(){
        String context="hello "+new Date();
        System.out.println("Sender: "+context);
        amqpTemplate.convertAndSend("hello",context);
    }
}
View Code
复制代码

添加接收类Receiver

复制代码
import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;

@Component

public class Receiver {
    @RabbitListener(queues = "hello")
    @RabbitHandler
    public void process(String hello){
        System.out.println("Receiver: "+hello);
    }
}
View Code
复制代码

注意这里的@RabbitListener(queues = "hello")不要加在类上,而是加在方法上,官方的教程这里是错误的

添加配置类RabbitConfig

复制代码
import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class RabbitConfig {
    @Bean
    public Queue helloQueue(){
        return new Queue("hello");
    }
}
View Code
复制代码

配置文件

复制代码
spring.application.name=rabbitmq-hello

spring.rabbitmq.host=10.202.203.29
spring.rabbitmq.port=5672
spring.rabbitmq.username=springcloud
spring.rabbitmq.password=123456
View Code
复制代码

单元测试

复制代码
@RunWith(SpringRunner.class)
@SpringBootTest
public class RabbitmqHelloApplicationTests {
    @Autowired
    private Sender sender;
    @Test
    public void contextLoads() {
        sender.send();
    }
}
View Code
复制代码

启动应用,在RabbitMQ管理界面中查看连接

 

运行单元测试,可以在控制台看到结果

 

再查看管理页面

 

 开启应用的接受监控后,可以在rabbitmq管理界面直接发送消息,需要指定编码格式

在控制台可以看到接收到了消息

 

posted @   uptothesky  阅读(396)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· [AI/GPT/综述] AI Agent的设计模式综述
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
点击右上角即可分享
微信分享提示