introducir el segundo nos brevemente RabbitMQ e integración con SpringMVC:
Como parte del proyecto aún no ha cambiado SpringBoot, asi que aquí introducir e integrar RabbitMQ y la SpringMVC.
1, escribe un productor de mensajes
(1) pom documento incorporado RabbitMQ sus dependencias
<dependency>
<groupId>org.springframework.amqp</groupId>
<artifactId>spring-rabbit</artifactId>
<version>${rabbitmq.version}</version>
</dependency>
RabbitMQ de escritura (2) de configuración de clase
//连接rabbitMQ的基本配置
@Configuration
@EnableRabbit
public class RabbitConfig {
@Bean
public ConnectionFactory connectionFactory() {
// 读取rabbitmq配置,此处请自行配置,一般配置于配置文件
String hostname = PropertiesUtils.GetPropertiesByClassPath("global.properties").getProperty("rabbit.hostname");
String username = PropertiesUtils.GetPropertiesByClassPath("global.properties").getProperty("rabbit.username");
String password = PropertiesUtils.GetPropertiesByClassPath("global.properties").getProperty("rabbit.password");
int port = Integer.valueOf(PropertiesUtils.GetPropertiesByClassPath("global.properties").getProperty("rabbit.port"));;
CachingConnectionFactory connectionFactory = new CachingConnectionFactory(hostname);
connectionFactory.setUsername(username);
connectionFactory.setPassword(password);
connectionFactory.setPort(port);
return connectionFactory;
}
@Bean
public AmqpAdmin amqpAdmin() {
return new RabbitAdmin(connectionFactory());
}
@Bean
public RabbitTemplate rabbitTemplate() {
return new RabbitTemplate(connectionFactory());
}
//配置消费者监听的容器
@Bean
public SimpleRabbitListenerContainerFactory rabbitListenerContainerFactory() {
SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
factory.setConnectionFactory(connectionFactory());
factory.setConcurrentConsumers(3);
factory.setMaxConcurrentConsumers(10);
return factory;
}
@Bean
public Queue Queue() {
// System.out.println("RabbitConfig");
return new Queue("orderInfoQueue");
}
}
(3) la preparación de una clase de configuración modelo productor-consumidor
//生产者消费者模式的配置,包括一个队列和两个对应的消费者
@Configuration
public class ProducerConsumerConfig {
@Bean
public Queue myQueue() {
Queue queue=new Queue("myqueue");
return queue;
}
}
clase de mensaje (4)
@Service
public class ProducerImpl implements Producer {
@Autowired
private RabbitTemplate rabbitTemplate;
@Override
public void sendMessage(String queue, Message message) {
if (queue.equals("error")) {
throw new RuntimeException("error");
}
rabbitTemplate.setQueue(queue);
rabbitTemplate.convertAndSend(queue,message);
}
2, escriba un mensaje a los consumidores
(1) preparado por el mismo productor (1) se introduce la dependencia (2) a la configuración de escritura (3) Modo de configuración
(2) el tipo de mensaje recibido
public class Receiver {
private final static String QUEUE_NAME = "MyQueue";
public static void main(String[] args) {
receive();
}
public static void receive()
{
ConnectionFactory factory = null;
Connection connection = null;
Channel channel = null;
try {
factory = new ConnectionFactory();
factory.setHost("localhost");
connection = factory.newConnection();
channel = connection.createChannel();
channel.queueDeclare(QUEUE_NAME, false, false, false, null);
Consumer consumer = new DefaultConsumer(channel){
public void handleDelivery(String consumerTag, Envelope envelope, BasicProperties properties,
byte[] body) throws IOException {
System.out.println("11111111111");
String message = new String(body, "UTF-8");
System.out.println("收到消息....."+message);
}};
channel.basicConsume(QUEUE_NAME, true,consumer);
} catch (IOException e) {
e.printStackTrace();
} catch (TimeoutException e) {
e.printStackTrace();
}finally{
//关闭资源
if (channel!=null){
try {
channel.close();
} catch (IOException e) {
e.printStackTrace();
} catch (TimeoutException e) {
e.printStackTrace();
}
}
if (connection!=null){
try {
connection.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
3, se recibe el mensaje de prueba
Hasta el momento, RabbitMQ y SpringMVC integración se ha completado, espero que los próximos práctica en los zapatos para niños.