我正在使用Amqp和ActiveMQ,它需要版本1-0- ,而不是旧版本0-9 -
在版本0-9- *中使用" RabbitMQ.Client" (我使用RabbitMQ并切换到ActiveMQ),以下C#代码可以连接到一个代理。
factory = new ConnectionFactory()
{
Protocol = Protocols.FromEnvironment(),
HostName = IpAddress,
Port = Port,
VirtualHost = VirtualHost,
UserName = User,
Password = Password
};
但是在#34; Apache.NMS.ActiveMQ"中使用版本1-0- *,这不起作用, (此处的示例改为使用IConnectionFactory:http://activemq.apache.org/nms/examples.html 但无法在那里输入HostName,Port,VirtualHost,UserName,Password。 )
我如何使用" Apache.NMS.ActiveMQ",并在代码中与用户名,密码建立连接。
谢谢:)
答案 0 :(得分:2)
ActiveMQ是multi protocol经纪人。 AMQP 1.0是它支持的有线协议之一。
但是,Apache.NMS.ActiveMQ lib正在使用OpenWire协议(AMQ上的默认端口61616)。即使使用用户名和密码,也可以直接使用NMS连接到OpenWire。
IConnectionFactory factory = new ConnectionFactory("tcp://localhost:61616);
using (IConnection connection = factory.CreateConnection("user1234","s3cr3tp4ssw0rd")
{
using (ISession session = connection.CreateSession ())
{
// send a message or whatever
如果您真的想使用AMQP进行连接,我建议使用QPid proton lib而不是NMS。 NMS有something going on as well,但它还没有。
答案 1 :(得分:0)
现在有一个Apache ActiveMQ发布的Apache.NMS.AMQP版本,它可以在Nuget中使用。
https://www.nuget.org/packages/Apache.NMS.AMQP
您可以贡献