如何通过配置实现ActiveMQ 5.14.3与Solace 10.0.1.41的主题消息桥接?
ActiveMQ 5.14.3 到 Solace 10.0.1.41 的主题消息桥接方案
一、首选:通过ActiveMQ内置JMS桥接(纯配置实现,无需独立服务)
ActiveMQ原生支持JMS桥接功能,直接修改核心配置文件activemq.xml即可实现与Solace的主题消息转发,无需额外部署服务。
配置步骤与示例
- 添加Solace JMS连接工厂与桥接规则
在ActiveMQ的activemq.xml中,找到<broker>标签,在内部新增<jmsBridgeConnectors>节点(若已有则直接修改):
<broker xmlns="http://activemq.apache.org/schema/core" brokerName="localhost" dataDirectory="${activemq.data}"> <!-- 保留原有配置 --> <jmsBridgeConnectors> <jmsQueueConnector name="solace-jms-bridge"> <!-- 配置Solace的JNDI连接参数 --> <remoteConnectionFactory> <properties> <property name="java.naming.factory.initial" value="com.solacesystems.jndi.SolJNDIInitialContextFactory"/> <property name="java.naming.provider.url" value="smf://10.0.1.41:55555"/> <!-- Solace默认SMF端口 --> <property name="java.naming.security.principal" value="your-solace-username"/> <!-- 替换为你的Solace用户名 --> <property name="java.naming.security.credentials" value="your-solace-password"/> <!-- 替换为你的Solace密码 --> </properties> </remoteConnectionFactory> <!-- 主题桥接映射:ActiveMQ源主题 -> Solace目标主题 --> <outboundQueueBridges> <outboundQueueBridge> <localQueue>activemq-topic://demo/source/topic</localQueue> <!-- ActiveMQ侧的源主题 --> <remoteQueue>solace-topic://demo/target/topic</remoteQueue> <!-- Solace侧的目标主题 --> </outboundQueueBridge> </outboundQueueBridges> </jmsQueueConnector> </jmsBridgeConnectors> <!-- 保留原有配置 --> </broker>
注意事项:
- 需将Solace官方提供的JMS客户端jar包放入ActiveMQ的
lib目录(需匹配Solace 10.0.1.41的兼容版本)- 若Solace环境修改了默认SMF端口,需同步调整
java.naming.provider.url中的端口号- 替换配置中的用户名、密码为实际的Solace认证信息
- 重启ActiveMQ服务
配置完成后重启ActiveMQ,桥接即可生效,发送到demo/source/topic的消息会自动转发到Solace的demo/target/topic。
二、其他可选桥接协议
除JMS外,还可通过以下协议实现桥接:
1. AMQP 1.0
两者均原生支持AMQP 1.0,可通过双向连接器实现:
- ActiveMQ端:在
activemq.xml的<transportConnectors>节点中启用AMQP监听:
<transportConnectors> <transportConnector name="amqp" uri="amqp://0.0.0.0:5672?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/> </transportConnectors>
- Solace端:配置AMQP客户端连接到ActiveMQ的5672端口,订阅源主题并发布到Solace目标主题;或直接配置Solace的AMQP桥接器指向ActiveMQ。
2. MQTT
适合轻量消息场景,两者均支持MQTT:
- ActiveMQ在
activemq.xml中启用MQTT监听(默认端口1883):
<transportConnectors> <transportConnector name="mqtt" uri="mqtt://0.0.0.0:1883?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/> </transportConnectors>
- Solace侧配置MQTT客户端连接到ActiveMQ,实现消息转发;或配置Solace的MQTT桥接器。
内容的提问来源于stack exchange,提问作者appletabo
相关产品推荐
相关产品推荐

