RabbitMQ的简单使用

RabbitMQ使用消费者和生产者模式。

@Component
public class GoodsListener {

    @Autowired
    private GoodsHtmlService goodsHtmlService;

    @RabbitListener(bindings = @QueueBinding(
            value = @Queue(value = "leyou.create.web.queue", durable = "true"),
            exchange = @Exchange(
                    value = "leyou.item.exchange",
                    ignoreDeclarationExceptions = "true",
                    type = ExchangeTypes.TOPIC),
            key = {"item.insert", "item.update"}))
    public void listenCreate(Long id) throws Exception {
        if (id == null) {
            return;
        }
        // 创建页面
        goodsHtmlService.createHtml(id);
    }

    @RabbitListener(bindings = @QueueBinding(
            value = @Queue(value = "leyou.delete.web.queue", durable = "true"),
            exchange = @Exchange(
                    value = "leyou.item.exchange",
                    ignoreDeclarationExceptions = "true",
                    type = ExchangeTypes.TOPIC),
            key = "item.delete"))
    public void listenDelete(Long id) {
        if (id == null) {
            return;
        }
        // 删除页面
        goodsHtmlService.deleteHtml(id);
    }
}

以上是一个实例,接下来具体说一下,什么是什么

@RabbitListener(bindings = @QueueBinding(
            value = @Queue(value = "leyou.create.web.queue", durable = "true"),
            exchange = @Exchange(
                    value = "leyou.item.exchange",
                    ignoreDeclarationExceptions = "true",
                    type = ExchangeTypes.TOPIC),
            key = {"item.insert", "item.update"}))
    public void listenCreate(Long id) throws Exception {
        if (id == null) {
            return;
        }
        // 创建页面
        goodsHtmlService.createHtml(id);
    }

value是一个监听的队列,exchange是被绑定的一个交换机,key是一个routing key,下面的listenCreate方法负责业务处理.
RabbitMQ是基于AMQP协议的,它的核心概念有:
server:又称broker,接受客户端连接,实现AMQP实体服务。
connection:连接和具体broker网络连接。
channel:网络信道,几乎所有操作都在channel中进行,channel是消息读写的通道。客户端可以建立多个channel,每个channel表示一个会话任务。
message:消息,服务器和应用程序之间传递的数据,由properties和body组成。properties可以对消息进行修饰,比如消息的优先级,延迟等高级特性;body是消息实体内容。
*Virtual host:*虚拟主机,用于逻辑隔离,最上层消息的路由。可以在RabbitMQ浏览器管理页面手动操作新建用户(默认是guest),同时也可以给它分配一个虚拟主机的操作权限,如果选择自己的用户,记得在application.yml中设置一个对应的Virtual host,一个Virtual host可以有若干个Exchange和Queue,同一个Virtual host不能有同名的Exchange或Queue。
Exchange:交换机,接受消息,根据路由键转发消息到绑定的队列上。
banding:Exchange和Queue之间的虚拟连接,binding中可以包括routing key.
routing key:一个路由规则,虚拟机根据他来确定如何路由 一条消息。
Queue:消息队列,用来存放消息的队列。
一般情况下,我们接触后三个基本就足够了.

this.amqpTemplate.convertAndSend("item." + type, id);

这是发送消息的方法,item.update,item.delete等等,这是routing key,这里的amqpTemplate已经事先在applica.yml文件上指定了交换机。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值