我在AWS上创建了一个代理,其中包含如下所示的端点列表:
amqp+ssl://b-***-1.mq.us-east-1.amazonaws.com:5671
ssl://b-***-1.mq.us-east-1.amazonaws.com:61617
stomp+ssl://b-***-1.mq.us-east-1.amazonaws.com:61614
mqtt+ssl://b-***-1.mq.us-east-1.amazonaws.com:8883
我尝试使用Apache.NMS.ActiveMQ调用.NET应用程序中的端点,但总是得到错误:
Apache.NMS.NMSConnectionException: 'No IConnectionFactory implementation found for connection URI: amqps://b***-1.mq.us-east-2.amazonaws.com:5671
这是我的申请表:
using System;
using System.Threading;
using Apache.NMS;
using Apache.NMS.Util;
using Apache.NMS.ActiveMQ;
namespace Apache.NMS.ActiveMQ.Test
{
public class TestMain
{
public static void Main()
{
Uri connecturi = new Uri("amqp+ssl://b-***-1.mq.us-east-2.amazonaws.com:5671");
Console.WriteLine("About to connect to " + connecturi);
IConnectionFactory factory = new NMSConnectionFactory(connecturi);
。
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Apache.NMS.ActiveMQ" Version="2.0.0" />
</ItemGroup>
</Project>
我为入站流量打开了端口,可以访问代理控制台。
我也试过amqp://b-***-1.mq.us-east-1.amazonaws.com:5671
,但没有运气。
我可以使用以下命令成功地与本地服务器交互:
Uri connecturi = new Uri("tcp://localhost:61616?wireFormat.tightEncodingEnabled=true");
是不是少了什么?
1条答案
按热度按时间wh6knrhe1#
您似乎正在尝试从.NET NMS.ActiveMQ openwire协议客户端连接到AMQP端点,但这肯定无法正常工作。您需要使用.NET AMQP客户端(如NMS.AMQP client),或者将您已经拥有的客户端指向Openwire端口(61617),并为该客户端使用正确的URI(“ssl://:“),当然,还需要进行必要的配置更改,以便客户端找到正确的SSL证书。