springboot 集成rabbitmq

1.需要引入的jar

<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-amqp -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-amqp</artifactId>
    <version>1.5.1.RELEASE</version>
</dependency>

2.属性文件配置

spring:
  ###rabbitmq
  rabbitmq.host: 127.0.0.1
  rabbitmq.port: 5672
  rabbitmq.username: guest
  rabbitmq.password: guest
  rabbitmq:
    #发送方确认机制
    #生产者将信道设置成 confmn 确认)模式,一旦信道进入 confmn 模式,所有在该信道上
    #面发布的消息都会被指派 个唯一的 IDC 开始),一旦消息被投递到所有匹配的队列之后,
    #RabbitMQ 会发送一个确认 CBasic.Ack) 给生产者(包含消息的唯一 ID) ,这就使得生产
    #者知晓消息已经正确到达了目的地了
    publisher-confirms: true
    #当使用ConvertAndSend的时候不需要设置返回值,convertSendAndReceive才需要
    publisher-returns: true
    template:
    #当mandatory 参数设为 true,交换器无法根据自身的类型和路由键找到一个符合条件
    #的队列,那么 RabbitM 会调用 Basic.Return 命令将消息返回给生产者 。当 mandatory
    #数设置为 false 时,出现上述情形,则消息直接被丢弃
      mandatory: true

3. 定义的常量

	/***
	 * 延迟队列type x-delayed-message
	 */
	public static final String X_DELAYED_MESSAGE = "x-delayed-message";
	/***
	 * 延迟队列args key = "x-delayed-type"
	 */
	public static final String DELAY_ARGS_KEY = "x-delayed-type";
	/***
	 * 延迟队列args value = "direct"
	 */
	public static final String DELAY_ARGS_VALUE = "direct";
	/***
	 * 
	 */
	public static final String DELAY_HEADER_KEY = "x-delay"; 
	/***
	 * 延迟队列delay_order_status_queue
	 */
	public static final String DELAY_ORDER_STATUS_QUEUE = "delay_order_status_queue";
	/***
	 * 延迟队列delay_order_status_exchange
	 */
	public static final String DELAY_ORDER_STATUS_EXCHANGE = "delay_order_status_exchange";
	/***
	 * 延迟队列delay_test_queue
	 */
	public static final String DELAY_TEST_QUEUE = "delay_test_queue";
	/***
	 * 延迟队列delay_test_exchange
	 */
	public static final String DELAY_TEST_EXCHANGE = "delay_test_exchange";
	/***
	 * 延迟队列delay_update_user_queue
	 */
	public static final String DELAY_UPDATE_USER_QUEUE = "delay_update_user_queue";
	/***
	 * 延迟队列delay_update_user_exchange
	 */
	public static final String DELAY_UPDATE_USER_EXCHANGE = "delay_update_user_exchange";
	/***
	 * DirectConfig 
	 * direct_exchange_a
	 */
	public static final String DIRECT_EXCHANGE_A = "direct_exchange_a";
	/***
	 * 延迟队列名称 :direct_queue_a
	 */
	public static final String DIRECT_QUEUE_A = "direct_queue_a";

4.DirectConfig.java

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;

import com.shy.springboot.utils.Constant;

/***
 * @Title: springstarter
 * @author shy
 * @Description direct队列
 *
 */
@Configuration
public class DirectConfig {
	/*********************************
	 * test_direct_queue
	 **************************************/
	@Bean
	public DirectExchange getDirectExchange() {
		return new DirectExchange("test_direct_exchange", true, true);
	}

	@Bean
	public Queue testDirectQueue() {
		Queue queue = new Queue("test_direct_queue", true);
		return queue;
	}

	@Bean
	public Binding testDirectBinding() {
		return BindingBuilder.bind(testDirectQueue()).to(getDirectExchange()).with("test_direct_queue");
	}

	/*********************************
	 * direct_queue_a
	 **************************************/

	@Bean
	public DirectExchange getDirectExchangeA() {
		return new DirectExchange(Constant.DIRECT_EXCHANGE_A, true, true);
	}

	@Bean
	public Queue getDirectQueueA() {
		return new Queue(Constant.DIRECT_QUEUE_A, true);
	}

	@Bean
	public Binding directBindingA() {
		return BindingBuilder.bind(getDirectQueueA()).to(getDirectExchangeA()).with(Constant.DIRECT_QUEUE_A);
	}
}

5. 消费

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
import com.alibaba.fastjson.JSONObject;
import com.shy.springboot.utils.Constant;
import lombok.extern.slf4j.Slf4j;
@Slf4j
@Component
public class ConsumeDirect {
	
	@RabbitListener(queues = "test_direct_queue")
    public void processDirectMessage(String message) throws ParseException{
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        log.info("消息接受时间》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》:" + sdf.format(new Date()));
        log.info("已消费的信息》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》:" + message);
	}
	
	@RabbitListener(queues = Constant.DIRECT_QUEUE_A)
    public void processDirectAMessage(String message) throws ParseException{
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        log.info("消息接受时间》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》:" + sdf.format(new Date()));
	}
}

6. 推送消息

@RequestMapping(value = "/direct")
@ResponseBody
public String directSend() {
	log.info("请求发起时间 》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》 :" + CommonUtils.dateFormat(new Date(), null));
	String message = "進入test_direct_queue隊列,message = {direct queue 测试发送}, 即將被消費... ";
	rabbitTemplate.convertAndSend("test_direct_exchange", "test_direct_queue", message);
	return "success";
}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SpringBoot集成RabbitMQ可以通过以下步骤实现。首先,在配置文件中添加RabbitMQ的连接信息。例如,在application.yml文件中配置RabbitMQ的主机、端口、用户名和密码等信息。\[1\]然后,引入SpringBoot整合RabbitMQ的依赖,包括spring-boot-starter-amqp和spring-rabbit-test等依赖项。\[2\]接下来,可以编写代码来实现与RabbitMQ的交互,例如发送和接收消息等操作。通过使用RabbitTemplate和@RabbitListener等注解,可以方便地实现消息的发送和接收。最后,可以通过运行SpringBoot应用程序来测试RabbitMQ的集成是否成功。 #### 引用[.reference_title] - *1* [SpringBoot 集成RabbitMQ](https://blog.csdn.net/July_whj/article/details/120634833)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Springboot整合RabbitMQ](https://blog.csdn.net/weixin_49076273/article/details/124991012)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [SpringBoot教程(十五) | SpringBoot集成RabbitMq](https://blog.csdn.net/lsqingfeng/article/details/123652520)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值