酒吧网站模板,哈尔滨互联网公司,什么网站的页面好看,工程公司管理系统原始状态的 activemq-client sdk 集成非常方便#xff0c;也更适合定制。就是有些同学#xff0c;可能对原始接口会比较陌生#xff0c;会希望有个具体的示例。
dependencygroupIdorg.apache.activemq/groupIdartifactIdactivemq-client也更适合定制。就是有些同学可能对原始接口会比较陌生会希望有个具体的示例。
dependencygroupIdorg.apache.activemq/groupIdartifactIdactivemq-client/artifactIdversion${activemq.version}/version
/dependencydependencygroupIdorg.apache.activemq/groupIdartifactIdactivemq-pool/artifactIdversion${activemq.version}/version
/dependency希望更加简化使用的同学可以使用
activemq-solon-cloud-plugin 使用更简单定制性弱些
1、添加集成配置
先使用 Solon 初始器 先生成一个 Solon Web 模板项目然后添加上面的 activemq-client 依赖。再做个配置约定也可按需定义
“solon.activemq”作为配置前缀 “properties”作为公共配置“producer”作为生态者专属配置估计用不到“consumer”作为消费者专属配置估计用不到
具体的配置属性参考自ActiveMQConnectionFactory
solon.app:name: demo-appgroup: demo# 配置可以自由定义与 Bean 代码对应起来即可以下为参考
solon.activemq:properties: #公共配置配置项参考ActiveMQConnectionFactorybrokerURL: failover:tcp://localhost:61616redeliveryPolicy:initialRedeliveryDelay: 5000backOffMultiplier: 2useExponentialBackOff: truemaximumRedeliveries: -1maximumRedeliveryDelay: 3600_000添加 java 配置器
Configuration
public class ActivemqConfig {Bean(destroyMethod stop)public Connection client(Inject(${solon.activemq.properties}) Props common) throws Exception {String brokerURL (String) common.remove(brokerURL);String userName (String) common.remove(userName);String password (String) common.remove(password);ActiveMQConnectionFactory factory;if (Utils.isEmpty(userName)) {factory new ActiveMQConnectionFactory(brokerURL);} else {factory new ActiveMQConnectionFactory(brokerURL, userName, password);}//绑定额外的配置并创建连接Connection connection common.bindTo(factory).createConnection();connection.start();return connection;}Beanpublic IProducer producer(Connection connection) throws Exception {return new IProducer(connection);}Beanpublic void consumer(Connection connection,MessageListener messageListener) throws Exception {Session session connection.createSession(false, Session.CLIENT_ACKNOWLEDGE);Destination destination session.createTopic(topic.test);MessageConsumer consumer session.createConsumer(destination);consumer.setMessageListener(messageListener);}
}activemq 的消息发送的代码比较复杂所以我们可以做个包装处理用于上面的配置构建临时命名为 IProducer
public class IProducer {private Connection connection;public IProducer(Connection connection) {this.connection connection;}public void send(String topic, MessageBuilder messageBuilder) throws JMSException {Session session connection.createSession(false, Session.CLIENT_ACKNOWLEDGE);Destination destination session.createTopic(topic);MessageProducer producer session.createProducer(destination);producer.send(destination, messageBuilder.build(session));}FunctionalInterfacepublic static interface MessageBuilder {Message build(Session session) throws JMSException;}
}3、代码应用
发送或生产这里代控制器由用户请求再发送消息仅供参考
Controller
public class DemoController {Injectprivate IProducer producer;Mapping(/send)public void send(String msg) throws Exception {//发送producer.send(topic.test, s - s.createTextMessage(test));}
}监听或消费这里采用订阅回调的方式仅供参考
Component
public class DemoMessageListener implements MessageListener {Overridepublic void onMessage(Message message) {System.out.println(message);RunUtil.runAndTry(message::acknowledge);}
}