一,安装erlang环境
rabbitmq是基于elarng语言
二,安装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");
}