微服务SpringCloud项目:初步整合rabbitmq

前言

心态好了,就没那么累了。心情好了,所见皆是明媚风景。
复制代码

“一时解决不了的问题,那就利用这个契机,看清自己的局限性,对自己进行一场拨乱反正。”正如老话所说,一念放下,万般自在。如果你正被烦心事扰乱心神,不妨学会断舍离。断掉胡思乱想,社区垃圾情绪,离开负面能量。心态好了,就没那么累了。心情好了,所见皆是明媚风景。

十年生死两茫茫,写程序,到天亮。

千行代码,Bug何处藏。

纵使上线又怎样,朝令改,夕断肠。

领导每天新想法,天天改,日日忙。

相顾无言,惟有泪千行。

每晚灯火阑珊处,夜难寐,再写两行!
复制代码

RabbitMQ 简介

AMQP,即 Advanced Message Queuing Protocol高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。 AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。 RabbitMQ 是一个开源的 AMQP 实现,服务器端用 Erlang 语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP 等,支持 AJAX 。用于在 分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗

要学习 RabbitMQ 最靠谱的地方当然是他的官网:www.rabbitmq.com/,其他地方难免有解读误…

1. 引入依赖


本次需要创建2个子项目,一个 rabbitmq-provider (生产者),一个 rabbitmq-consumer(消费者)。

首先创建 rabbitmq-provider

pom.xml 里用到的jar依赖:

        <!--rabbitmq-->
        <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>
复制代码

2. 然后 application.yml


ps:里面的 虚拟 / 配置项 不是必须的,你们不创建,就不用加这个配置项。

srping: 
# rabbitmq消息队列配置
  rabbitmq:
    password: 账号
    username: 密码
    port: 5672
    addresses: 地址
    #开启发送失败返回
    publisher-returns: true
    #配置确认回调
    publisher-confirm-type: correlated
    listener:
      simple:
        #指定最小的消费者数量.
        concurrency: 5
        #指定最大的消费者数量.
        max-concurrency: 10
        #开启ack
        acknowledge-mode: auto
        # 最多一次消费多少条数据 -限流
        prefetch: 1
      #开启ack
      direct:
        acknowledge-mode: auto
    #支持消息的确认与返回
    template:
      mandatory: true
复制代码

3. direct exchange(直连型交换机)


创建 DirectRabbitConfig.java(对于队列和交换机持久化以及连接使用设置,在注释里有说明,后面的不同交换机的配置就不做同样说明了):

package com.cyj.dream.test.config;

import org.springframework.amqp.core.Binding;
import org.springframework.amqp.core.BindingBuilder;
import org.springframework.amqp.core.DirectExchange;
import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @Description: 直连型交换机
 * 1. 接着我们先使用下direct exchange(直连型交换机),创建DirectRabbitConfig.java(对于队列和交换机持久化以及连接使用设置,
 * 在注释里有说明,后面的不同交换机的配置就不做同样说明了):
 * @BelongsProject: DreamChardonnay
 * @BelongsPackage: com.cyj.dream.test.config
 * @Author: ChenYongJia
 * @CreateTime: 2021-10-18
 * @Email: chen87647213@163.com
 * @Version: 1.0
 */
@Configuration
public class DirectRabbitConfig {

    /**
     * 队列 起名:TestDirectQueue
     *
     * @return
     */
    @Bean
    public Queue TestDirectQueue() {
        // durable:是否持久化,默认是false,持久化队列:会被存储在磁盘上,当消息代理重启时仍然存在,暂存队列:当前连接有效
        // exclusive:默认也是false,只能被当前创建的连接使用,而且当连接关闭后队列即被删除。此参考优先级高于durable
        // autoDelete:是否自动删除,当没有生产者或者消费者使用此队列,该队列会自动删除。
        //   return new Queue("TestDirectQueue",true,true,false);

        //一般设置一下队列的持久化就好,其余两个就是默认false
        return new Queue("TestDirectQueue", true);
    }

    /**
     * Direct交换机 起名:TestDirectExchange
     *
     * @return
     */
    @Bean
    DirectExchange TestDirectExchange() {
        //  return new DirectExchange("TestDirectExchange",true,true);
        return new DirectExchange("TestDirectExchange", true, false);
    }

    /**
     * 绑定  将队列和交换机绑定, 并设置用于匹配键:TestDirectRouting
     *
     * @return
     */
    @Bean
    Binding bindingDirect() {
        return BindingBuilder.bind(Test
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值