首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用连接到现有总线的使用者读取消息

使用连接到现有总线的使用者读取消息
EN

Stack Overflow用户
提问于 2019-06-11 16:05:39
回答 2查看 819关注 0票数 0

我的代码:

public interface IMessage
{
    string Text { get; set; }
}

public class Program
{
    public static void Main()
    {
        var bus = Bus.Factory.CreateUsingRabbitMq(sbc =>
        {
            var host = sbc.Host(new Uri("rabbitmq://localhost"), h =>
            {
                h.Username("guest");
                h.Password("guest");
            });
        });

        bus.Start();

        bus.ConnectConsumer<TestConsumer>();

        bus.Publish<IMessage>(new { Text = "Hi" });

        Console.WriteLine("Press any key to exit");
        Console.ReadKey();

        bus.Stop();
    }
}

public class TestConsumer : IConsumer<IMessage>
{
    public Task Consume(ConsumeContext<IMessage> context)
    {
        Console.Out.WriteLineAsync($"Received: {context.Message.Text}");
        return Task.CompletedTask;
    }
}

我不知道消息发送到哪里,因为没有指定任何队列,因此我不知道如何使用消息。

有没有一种方法可以指定在总线定义之外发送和写入消息的队列?

我遗漏了什么?

EN

回答 2

Stack Overflow用户

发布于 2019-06-11 17:13:43

您在此处发布的内容

bus.Publish(new { Text = "Hi" });

是一个匿名类型,而不是您订阅的IMessage,我认为您需要创建IMessage接口,然后创建一些实现IMessage的类并通过总线发送

票数 0
EN

Stack Overflow用户

发布于 2019-06-12 03:31:53

而不是使用:

bus.ConnectConsumer<TestConsumer>();

考虑使用:

sbc.ReceiveEndpoint("queue-name", e => e.Consumer<TestConsumer>());

这将创建一个名为" queue -name“的队列,并将您的使用者连接到该队列。

如果您需要在事后将接收端点连接到总线,您可以使用:

host.ConnectReceiveEndpoint("queue-name", e => e.Consumer<TestConsumer>());

您需要从配置中保存主机,但它允许您在总线启动后添加接收端点。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56539142

复制
相关文章

相似问题

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