配置
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;
}
}
生產(chǎn)者 Queue destination定義調(diào)用同其他
@Service
public class ProducerQueue {
@Autowired
private JmsMessagingTemplate jmsTemplate;
@Autowired
private JmsTemplate template;//可以做更細(xì)微的控制
// 發(fā)送消息,destination是發(fā)送到的隊(duì)列阅签,message是待發(fā)送的消息
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;
}
});
}
}
生產(chǎn)者 Topic destination定義調(diào)用同其他
@Service
public class ProducerTopic {
@Autowired
private JmsMessagingTemplate jmsTemplate;
// 發(fā)送消息躁倒,destination是發(fā)送到的隊(duì)列叨襟,message是待發(fā)送的消息
public void sendMessage(Destination destination, final String message){
jmsTemplate.convertAndSend(destination, message);
}
}
消費(fèi)者Queue
@Component
public class ConsumerAQueue {
// 使用JmsListener配置消費(fèi)者監(jiān)聽的隊(duì)列司澎,其中text是接收到的消息
@JmsListener(destination = "springboot.queue")
public void receiveQueue(String text){
System.out.println(this.getClass().getName()+" receive msg:"+text);
}
}
消費(fèi)者Topic
@Component
public class ConsumerATopic {
// 使用JmsListener配置消費(fèi)者監(jiān)聽的隊(duì)列柄延,其中text是接收到的消息
@JmsListener(destination = "springboot.topic",
containerFactory = "jmsTopicListenerContainerFactory"
)
public void receiveTopic(String text) {
System.out.println(this.getClass().getName()+" 收到的報(bào)文為:"+text);
}
}