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");
    }

发布了20 篇原创文章 · 获赞 4 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/lj872224/article/details/88891605