使用MassTransit连接到ActiveMQ时,无法将连接器设置为AMQP

问题描述 投票:1回答:1

使用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 Connector连接到activeMQ。我正在寻找一种使用AMQP连接器进行连接的方法。

谢谢

c# .net-core activemq amqp masstransit
1个回答
1
投票

查看MassTransit的源代码,您现在似乎无法使用AMQP连接到ActiveMQ代理。代码使用NMS.ActiveMQ库,它只是openwire所以你需要坚持使用它。作者需要支持AMQP作为协议连接器,使用类似AmqpNetLite客户端作为支持它的任何消息平台的通用AMQP连接器。

© www.soinside.com 2019 - 2024. All rights reserved.