首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过`RawRabbit`进行两个控制台应用程序通信

通过`RawRabbit`进行两个控制台应用程序通信
EN

Stack Overflow用户
提问于 2018-06-15 23:02:12
回答 1查看 329关注 0票数 0

我需要帮助,我有两个控制台应用程序,通过RawRabbit通信。

我首先编写了一个控制台应用程序,并添加了PublisherReceiver,以查看连接是否正在进行:

代码语言:javascript
复制
var busClient = BusClientFactory.CreateDefault(busConfig);

busClient.SubscribeAsync<UserMessage>(async (resp, context) => {
     Console.Clear();
     Console.WriteLine(resp.msg);
     Console.WriteLine("Hi {0}, I am your father.", resp.name);
});
busClient.PublishAsync(new UserMessage { msg = "Hello my name is, " + name, name = name });`

这是可行的。

现在我想将接收器移动到另一个控制台应用程序,当我这样做时,它不工作。

EN

回答 1

Stack Overflow用户

发布于 2018-07-22 18:35:20

订阅者部分:

代码语言:javascript
复制
class Program {

    class MyMessage {
        public int Id { get; set; }

        public string Message { get; set; }
    }

    static async Task Main(string[] args) {

        IBusClient client = RawRabbitFactory.CreateSingleton(
            new RawRabbitOptions {
                ClientConfiguration =
                new ConfigurationBuilder()
                    .SetBasePath(Directory.GetCurrentDirectory())
                    .AddJsonFile("appsettings.json")
                    .Build()
                    .Get<RawRabbitConfiguration>()
            });

        const string QUEUE_NAME = "myConsole";
        const string EXCHANGE_NAME = "myRabbit";


        await client.SubscribeAsync<MyMessage>(async msg => {
            await Task.Run(() => {
                Console.WriteLine("{0}: {1}", msg.Id, msg.Message);
            });
        }, ctx => ctx.UseSubscribeConfiguration(cfg =>
           cfg.OnDeclaredExchange(dex => dex.WithName(EXCHANGE_NAME)
                                            .WithAutoDelete(false)
                                            .WithDurability(true)
                                //.WithType( ExchangeType.Topic )
                                )
                .FromDeclaredQueue(dq => dq.WithName(QUEUE_NAME)
                                       .WithExclusivity(false)
                                       .WithDurability(true)
                                       .WithAutoDelete(false))));
        Console.ReadLine();
    }
}

还有,出版商部分:

代码语言:javascript
复制
class Program {

    class MyMessage {
        public int Id { get; set; }

        public string Message { get; set; }
    }

    static async Task Main(string[] args) {

        IBusClient client = RawRabbitFactory.CreateSingleton(
            new RawRabbitOptions {
                ClientConfiguration =
                new ConfigurationBuilder()
                    .SetBasePath(Directory.GetCurrentDirectory())
                    .AddJsonFile("appsettings.json")
                    .Build()
                    .Get<RawRabbitConfiguration>()
            });

        const string QUEUE_NAME = "myConsole";
        const string EXCHANGE_NAME = "myRabbit";


        Action<IPublishContext> x = (ctx) => ctx.UsePublishConfiguration(xfg => xfg.OnExchange(EXCHANGE_NAME)); //.WithRoutingKey("mymessage"));

        await client.PublishAsync<MyMessage>(new MyMessage { Id = 5, Message = "Hello RabbitMQ" }, x);
        await client.PublishAsync(new MyMessage { Id = 4, Message = "Hello RabbitMQ" }, x);

        Console.ReadLine();
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50878188

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档