首页 > 解决方案 > 使用 MassTransit 连接到 ActiveMQ 时无法将连接器设置为 AMQP

问题描述

使用 MassTransit 我正在尝试使用 AMQP 连接器连接到 ActiveMQ。MassTransit 配置为使用 OpenWire 连接器连接到端口 61616。

使用以下命令为 ActiveMq 创建了一个本地容器

docker run --rm -d -p 5672:5672 -p 8161:8161 rmohr/activemq:5.15.6-alpine

现在,当尝试连接到 MassTransit 时,我正在通过端口 5672

var uriBuilder = new UriBuilder("amqp://localhost")
                {
                    Port = 5672
                };

                var serviceBusHost = cfg.Host(
                    uriBuilder.Uri, settings =>
                    {
                        settings.Password(credentials[0]);
                        settings.Username(credentials[1]);
                    });

在 activeMqBusFactory 中使用上述代码时,我遇到了以下异常: MassTransit.ActiveMqTransport.ActiveMqTransportConfigurationException: '地址方案无效:amqp'

将上面的代码更改为

var uriBuilder = new UriBuilder("activemq://localhost")
                {
                    Port = 5672
                };

                var serviceBusHost = cfg.Host(
                    uriBuilder.Uri, settings =>
                    {
                        settings.Password(credentials[0]);
                        settings.Username(credentials[1]);
                    });

我也不例外,但 webApp 卡住了消息正在启动总线主机...连接:admin@localhost:5672

只是为了澄清我在运行 docker 容器时是否公开了端口 61616 并使用以下代码

var uriBuilder = new UriBuilder("activemq://localhost")
                {
                    Port = 61616
                };

                var serviceBusHost = cfg.Host(
                    uriBuilder.Uri, settings =>
                    {
                        settings.Password(credentials[0]);
                        settings.Username(credentials[1]);
                    });

我可以使用 OpenWire 连接器连接到 activeMQ。我正在寻找一种使用 AMQP 连接器进行连接的方法。

谢谢

标签: c#.net-coreactivemqamqpmasstransit

解决方案


查看 MassTransit 的源代码,您现在似乎无法使用 AMQP 连接到 ActiveMQ 代理。该代码使用 NMS.ActiveMQ 库,该库仅是开放式的,因此您需要坚持使用它。作者需要支持 AMQP 作为协议连接器,使用类似AmqpNetLite客户端的东西作为支持它的任何消息平台的通用 AMQP 连接器。


推荐阅读