application.properties:
#mq引入
spring.default.activemq.brokerUrl=tcp://192.168.1.12:61616?wireFormat.maxInactivityDuration=10000
spring.default.activemq.user=admin
spring.default.activemq.password=admin
spring.mq119.activemq.brokerUrl=tcp://119.251.214.110:61616?wireFormat.maxInactivityDuration=10000
spring.mq119.activemq.user=admin
spring.mq119.activemq.password=admin
JmsTcpConfig:
import org.apache.activemq.ActiveMQConnectionFactory;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.jms.config.DefaultJmsListenerContainerFactory;
import org.springframework.jms.config.JmsListenerContainerFactory;
import org.springframework.jms.core.JmsMessagingTemplate;
@Configuration
public class JmsTcpConfig {
@Bean(name = "defaultConnectionFactory")
@Primary
public ActiveMQConnectionFactory firstConnectionFactory(
@Value("${spring.default.activemq.brokerUrl}") String brokerUrl,
@Value("${spring.default.activemq.user}") String username,
@Value("${spring.default.activemq.password}") String password) {
return createConnectionFactory(brokerUrl, username, password);
}
@Bean(name = "mq119ConnectionFactory")
public ActiveMQConnectionFactory secondConnectionFactory(
@Value("${spring.mq119.activemq.brokerUrl}") String brokerUrl,
@Value("${spring.mq119.activemq.user}") String username,
@Value("${spring.mq119.activemq.password}") String password) {
return createConnectionFactory(brokerUrl, username, password);
}
public ActiveMQConnectionFactory createConnectionFactory(String brokerUrl, String username, String password) {
ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory();
factory.setBrokerURL(brokerUrl);
factory.setUserName(username);
factory.setPassword(password);
return factory;
}
@Bean(name = "defaultJmsTemplate")
@Primary
public JmsMessagingTemplate defaultActivemqTemplate(
@Qualifier("defaultConnectionFactory") ActiveMQConnectionFactory connectionFactory) {
JmsMessagingTemplate template = new JmsMessagingTemplate(connectionFactory);
return template;
}
@Bean(name = "mq119JmsTemplate")
public JmsMessagingTemplate sasaActivemqTemplate(
@Qualifier("mq119ConnectionFactory") ActiveMQConnectionFactory connectionFactory) {
JmsMessagingTemplate template = new JmsMessagingTemplate(connectionFactory);
return template;
}
@Bean(name = "defaultJmsListenerContainerFactory")
public JmsListenerContainerFactory defaultFactory(
@Qualifier("defaultConnectionFactory") ActiveMQConnectionFactory connectionFactory) {
DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
factory.setConnectionFactory(connectionFactory);
return factory;
}
@Bean(name = "mq119JmsListenerContainerFactory")
public JmsListenerContainerFactory mq119Factory(
@Qualifier("mq119ConnectionFactory") ActiveMQConnectionFactory connectionFactory) {
DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
factory.setConnectionFactory(connectionFactory);
return factory;
}
}
生产者:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.jms.core.JmsMessagingTemplate;
import org.springframework.stereotype.Component;
import javax.jms.Destination;
/**
* tcp消息生产者
*
* @author yangfeng
* @date 2020-03-09
*/
@Component
public class JmsTcpProducer {
@Autowired
@Qualifier("defaultJmsTemplate")
private JmsMessagingTemplate jmsMessagingTemplate;
// 发送消息,destination是发送到的队列,message是待发送的消息
public void sendMessage(Destination destination, final String message) {
jmsMessagingTemplate.convertAndSend(destination, message);
}
}
消费者:
import com.test.service.IBordeventFdService;
import org.springframework.jms.annotation.JmsListener;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
import javax.annotation.Resource;
@Component
public class BordeventFdConsumer {
@Resource
private IBordeventFdService bordeventFdService;
@JmsListener(destination = "bordevent_fdaps", containerFactory = "mq119JmsListenerContainerFactory")
private void consume(final String msg) {
if (!StringUtils.isEmpty(msg)) {
bordeventFdService.save(msg);
}
}
}