微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – RabbitMQ:将消息从一台PC发送到另一台

我试图获得一个设置在一台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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐