配置
spring.activemq.broker-url=tcp://localhost:61616
spring.activemq.user=admin
spring.activemq.password=admin
spring.activemq.pool.enabled=true
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-activemq</artifactId>
</dependency>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-pool</artifactId>
</dependency>
配置类
@Configuration
@EnableJms
public class ActiveMqConfiguration {
@Value("${spring.activemq.user}")
private String usrName;
@Value("${spring.activemq.password}")
private String password;
@Value("${spring.activemq.broker-url}")
private String brokerUrl;
@Bean
public ConnectionFactory connectionFactory(){
ActiveMQConnectionFactory connectionFactory
= new ActiveMQConnectionFactory();
connectionFactory.setBrokerURL(brokerUrl);
connectionFactory.setUserName(usrName);
connectionFactory.setPassword(password);
return connectionFactory;
}
@Bean("jmsTopicListenerContainerFactory")
public JmsListenerContainerFactory jmsTopicListenerContainerFactory(
ConnectionFactory connectionFactory
){
DefaultJmsListenerContainerFactory factory
= new DefaultJmsListenerContainerFactory();
factory.setConnectionFactory(connectionFactory);
factory.setPubSubDomain(true);
return factory;
}
}
生产者 Queue destination定义调用同其他
@Service
public class ProducerQueue {
@Autowired
private JmsMessagingTemplate jmsTemplate;
@Autowired
private JmsTemplate template;//可以做更细微的控制
// 发送消息,destination是发送到的队列,message是待发送的消息
public void sendMessage(Destination destination, final String message){
jmsTemplate.convertAndSend(destination, message);
template.send(destination, new MessageCreator() {
@Override
public Message createMessage(Session session)
throws JMSException {
TextMessage msg = session.createTextMessage();
msg.setText("othre information");
return msg;
}
});
}
}
生产者 Topic destination定义调用同其他
@Service
public class ProducerTopic {
@Autowired
private JmsMessagingTemplate jmsTemplate;
// 发送消息,destination是发送到的队列,message是待发送的消息
public void sendMessage(Destination destination, final String message){
jmsTemplate.convertAndSend(destination, message);
}
}
消费者Queue
@Component
public class ConsumerAQueue {
// 使用JmsListener配置消费者监听的队列,其中text是接收到的消息
@JmsListener(destination = "springboot.queue")
public void receiveQueue(String text){
System.out.println(this.getClass().getName()+" receive msg:"+text);
}
}
消费者Topic
@Component
public class ConsumerATopic {
// 使用JmsListener配置消费者监听的队列,其中text是接收到的消息
@JmsListener(destination = "springboot.topic",
containerFactory = "jmsTopicListenerContainerFactory"
)
public void receiveTopic(String text) {
System.out.println(this.getClass().getName()+" 收到的报文为:"+text);
}
}
网友评论