c# - 使用 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 连接器进行连接的方法。
谢谢
解决方案
查看 MassTransit 的源代码,您现在似乎无法使用 AMQP 连接到 ActiveMQ 代理。该代码使用 NMS.ActiveMQ 库,该库仅是开放式的,因此您需要坚持使用它。作者需要支持 AMQP 作为协议连接器,使用类似AmqpNetLite客户端的东西作为支持它的任何消息平台的通用 AMQP 连接器。
推荐阅读
- android - 在底部导航视图的项目上添加文本
- javascript - 在AngularJS中检测耳机是否连接
- spring-boot - 如何从命令行启动位于 Spring Boot 项目中的 Spring Batch?
- linux - 如何仅通过使用程序集来确定操作系统(linux 或 windows)?(x86)
- shopify - Shopify 添加带有 URL https://myshopifyshop/index.html 的新 index.html 页面
- python - 熊猫不改变传说标签
- api - Here Maps - 超出 API 配额时返回什么 HTTP 状态代码?
- vue.js - 这是创建组件的正确方法吗?
- docker - How to docker-compose up only for services?
- reactjs - 如何在蚂蚁设计日期选择器中禁用所有星期日和特定日期数组