1. docker pull rabbitmq:3.7.8-management
2. docker run -d --name ml-rabbit -e RABBITMQ_DEFAULT_USER=user -e RABBITMQ_DEFAULT_PASS=password -p 5672:5672 -p 15672:15672 rabbitmq:3.7.8-management
3. 访问管理界面 `http://127.0.0.1:15672` (注:只有`management`版才有管理界面)
2. add Depending
3. add Config
spring:
rabbitmq:
host: 127.0.0.1
port: 5672
username: user
password: password
4. add Provider
package com.ml.rabbitmq.service;
import com.ml.rabbitmq.constant.RabbitConst;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class DemoProvider {
private final RabbitTemplate rabbitTemplate;
@Autowired
public DemoProvider(RabbitTemplate rabbitTemplate) {
this.rabbitTemplate = rabbitTemplate;
}
public void send(String data) {
final int length = 100;
for (int i = 0; i < length; i++) {
rabbitTemplate.convertAndSend(RabbitConst.QueueEnum.ML_MQ.getQueueName(), data + " --- " + i);
}
}
}
5. add Consumer
package com.ml.rabbitmq.service;
import com.ml.rabbitmq.constant.RabbitConst;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
@Component
public class DemoConsumer {
@RabbitListener(queues = RabbitConst.ML_MQ)
public void handlerTestMq(String data) {
try {
Thread.sleep(10000);
System.out.println("DemoConsumer data = " + data);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
6. add Queues
package com.ml.rabbitmq.config;
import com.ml.rabbitmq.constant.RabbitConst;
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;
@Configuration
public class RabbitMqConfig {
@Bean
public DirectExchange directExchange() {
return new DirectExchange(RabbitConst.QueueEnum.ML_MQ.getExchangeName());
}
@Bean
public Queue mlQueue() {
final String name = RabbitConst.QueueEnum.ML_MQ.getQueueName();
final boolean durable = true;
final boolean exclusive = false;
final boolean autoDelete = true;
return new Queue(name, durable, exclusive, autoDelete);
}
@Bean
public Binding mlBind() {
return BindingBuilder.bind(mlQueue()).to(directExchange()).with(RabbitConst.QueueEnum.ML_MQ.getRoutingKeyName());
}
}
7. 相关文档