SpringBoot整合rabbitmq实现延迟消息

一,安装erlang环境

rabbitmq是基于elarng语言

 

二,安装rabbitmq环境

请参考win10下安装rabbitmq

 

三,安装rabbitmq_delayed_message_exchange插件

插件下载地址http://www.rabbitmq.com/community-plugins.html (插件版本一定要和rabbitmq版本匹配上)

下载完压缩包,解压后放到rabbitmq 安装目录 plugins下面

执行 rabbitmq-plugins enable rabbitmq_delayed_message_exchange

启动rabbitmq

 

在sprigboot项目 pom 文件增加以下依赖

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-amqp</artifactId>

</dependency>

在application.properties文件增加以下配置

spring.rabbitmq.host=127.0.0.1

spring.rabbitmq.port=5672

spring.rabbitmq.username=test

spring.rabbitmq.password=123456

项目增加队列相关配置

@Component
public class RabbitmqConfig {

    @Bean
    public CustomExchange delayExchange() {
        Map<String, Object> args = new HashMap<>();
        args.put("x-delayed-type", "direct");
        return new CustomExchange("test_exchange", "x-delayed-message", true, false, args);
    }

    @Bean
    public Queue queue() {
        Queue queue = new Queue("test_queue", true);
        return queue;
    }
    
    @Bean
    public Binding binding() {
        return BindingBuilder.bind(queue()).to(delayExchange()).with("test_queue").noargs();
    }
}

五,编写消息监听类

@Component
public class MessageReceiver {

    @RabbitListener(queues = "test_queue")
    public void receive(String msg) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        System.out.println("消息接收时间:"+sdf.format(new Date()));
        System.out.println("接收到的消息:"+msg);
    }
}
 

五,单元测试延时消息效果

@RunWith(SpringRunner.class)
@SpringBootTest
public class RabbitmqApplicationTests {

    @Autowired
    private MessageServiceImpl messageService;

    @Test
    public void send() {
        messageService.sendMsg("test_queue_1","hello i am delay msg");
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值