RabbitMq-1.1 (mq与springboot的整合 以及 helloworld模型的使用)

一,rabbitmq与springboot的整合

第一步:引入相关的pom依赖

<!-- RabbitMq的依赖 -->
	<dependency>
		<groupId>com.rabbitmq</groupId>
		<artifactId>amqp-client</artifactId>
		<version>5.7.2</version>
	</dependency>
	<!-- RabbitMq和springboot的整合包 -->
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-amqp</artifactId>
		<version>2.1.3.RELEASE</version>
	</dependency>

第二步:编写yml文件

spring:
  application:
    name: zt-frank-mq-prod-service-9501 
  #Mq相关配置
  rabbitmq:
    host: localhost       #mq的主机地址
    port: 5672            #amqp的端口
    username: ems         #用户名
    password: 123         #密码
    virtual-host: /ems    #mq的v-host虚拟主机

因为rabbitMq天生就和spring很是匹配,所以整合起来相当方便

二,helloworld模型的基本的使用(Queue——简单队列 )

在这里插入图片描述

2.7版本支持模式:
Queue——简单队列
Work queue——Work模式
Publish/Subscribe——发布/订阅者模式
Routing——路由模式
Topics——通配符模式
RPC,远程调用,并不算一种队列模式

第一步:准备两个springboot的项目并将mq整合好

		  消息生产者:zt-frank-mq-prod-service-9501
		  消息消费者:zt-frank-mq-consumer-service-9505

第二步:生产者9501代码的编写,通过自动注入rabbitTemplate就可以直接调用方法发送消息


```java
/**
 * MQ:helleworld模式的生产方
 */
@Controller
@RequestMapping("/mq")
public class HelloWorldTemplate_1 {

    private static Logger logger = Logger.getLogger(HelloWorldTemplate_1.class);

    @Autowired
    private RabbitTemplate rabbitTemplate;

    @PostMapping("/helloworld")
    @ResponseBody
    public String test(){
        logger.info("mq开始生成消息-helloworld模式");
        /**
         * 生产者发送消息:\
         *  当前模式下的消息发送模式是一对一的模式是没有经过exchange的直接由生产者给队列发消息,
         *  说如果hello这个队列没有消费者,
         * 下面这行代码无论运行多少次,都是不会消息产生的,更不会创建队列,
         * 换言之hello这个队列,不是在生产这这里创建的,而是在消费者哪里创建的
         */
        rabbitTemplate.convertAndSend("hello","hello world");
        logger.info("mq生成消息结束-helloworld模式");
        return "OK";
    }
}	

第三步:消费方9505代码的编写

/**
 * MQ:helleworld模式的消费方
 */
@Component
//queuesToDeclare:没有队列就新建队列
@RabbitListener(queuesToDeclare = @Queue("hello"))
/**
 * value:队列名称
 * durable:是否持久化
 * autoDelete:是否自动删除
 * exclusive:是否独占 true:独占(只允许当前的连接可用) false:不独占其他服务可以用
 */
//@RabbitListener(queuesToDeclare = @Queue(value = "hello",durable = "false",autoDelete = "false"))
public class HelloWorldTemplateListener_1 {

    private static Logger logger = Logger.getLogger(HelloWorldTemplateListener_1.class);

    @Autowired
    private RabbitTemplate rabbitTemplate;

    //指定消费方的回调方法
    @RabbitHandler
    public void helloWorldModel(String message){
        logger.info("mq开始消费消息-helloworld模式");
        System.out.println("MQ消费消息:"+message);
        logger.info("mq消费消息结束-helloworld模式");
    }
}

三,测试;

postmen调用生产者9501服务,测试OK

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值