c# – RabbitMQ:将消息从一台PC发送到另一台
发布时间:2020-12-15 22:03:53 所属栏目:百科 来源:网络整理
导读:我试图获得一个设置在一台PC上的rabbitMQ队列,并从其他计算机接收消息,为其提供任务.我已经关注了兔子网站上的所有教程,但这些只适用于本地主机.有人可以解释我如何使用相同的代码在两台计算机之间进行通信,而不仅仅是来自同一台计算机. 我有以下代码: Send
我试图获得一个设置在一台PC上的rabbitMQ队列,并从其他计算机接收消息,为其提供任务.我已经关注了兔子网站上的所有教程,但这些只适用于本地主机.有人可以解释我如何使用相同的代码在两台计算机之间进行通信,而不仅仅是来自同一台计算机.
我有以下代码: Sender.cs class Send { static void Main(string[] args) { Console.WriteLine("------------------"); Console.WriteLine("RabbitMQ Test"); Console.WriteLine("------------------"); var factory = new ConnectionFactory() { HostName = "localHost" }; try { using (var connection = factory.CreateConnection()) { using (var channel = connection.CreateModel()) { channel.QueueDeclare("abc",false,null); Console.WriteLine("Enter the messages you want to send (Type 'exit' to close program)..."); string message = null; while (message != "exit") { message = Console.ReadLine(); var body = Encoding.UTF8.GetBytes(message); channel.BasicPublish("","abc",null,body); } } } } catch (Exception e) { string message = e.ToString(); } } Reciever.cs class Recieve { static void Main(string[] args) { ConnectionFactory factory = new ConnectionFactory() { HostName = "localhost" }; using (IConnection connection = factory.CreateConnection()) { using (IModel channel = connection.CreateModel()) { channel.QueueDeclare("abc",null); QueueingBasicConsumer consumer = new QueueingBasicConsumer(channel); channel.BasicConsume("abc",true,consumer); Console.WriteLine(" [*] Waiting for messages." + "To exit press CTRL+C"); while (true) { var ea = (BasicDeliverEventArgs)consumer.Queue.Dequeue(); var body = ea.Body; var message = Encoding.UTF8.GetString(body); Console.WriteLine("[Recieved]: {0}",message); } } } } } 想法是通过两台计算机进行这些通信,以便将ConnectionFactory的主机名更改为另一台计算机的IP或某种程度的内容吗?我已在两台计算机上正确安装了兔子,并且此代码在每台计算机上单独运行.我只需要在计算机之间进行通信. 任何帮助将不胜感激.我无法在互联网上找到任何这方面的例子. 解决方法
RabbitMQ是一个集中的消息队列.您只能将其安装在服务器计算机(或服务器计算机集群)上,而不是安装在每个发布或订阅客户端上.然后,客户端将在集中式计算机上订阅或发布到队列.
在您的开发环境中,您应该决定要将两台计算机中的哪一台作为服务器.然后传递每个客户端的主机名和密码.两个客户端都应该使用相同的主机名. var server = "http://127.0.0.1"; // An install of RabbitMQ reachable from both clients var password = "guest"; var username = "guest"; var connectionFactory = new ConnectionFactory { HostName = server,Password = password,Username = username}; 如果你想在没有在服务器上安装东西的情况下进行消息传递,你应该看看ZeroMQ (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |