当前位置: 首页 > 知识库问答 >
问题:

如何在C#中从Artemis组播队列接收消息?

林英武
2023-03-14

我准备使用C#应用程序通过ActiveMQ Artemis发送和接收消息。在选播模式下,一切都在工作。

private void Receiver()
{
    IConnectionFactory factory = new NMSConnectionFactory("multicast:tcp://172.29.213.150:61616");
    IConnection connection = factory.CreateConnection("artemis", "simetraehcapa");
    connection.Start();
    ISession session = connection.CreateSession(AcknowledgementMode.AutoAcknowledge);
    IDestination destination = SessionUtil.GetDestination(session, "hund");
    IMessageConsumer receiver = session.CreateConsumer(destination);
    receiver.Listener += new MessageListener(Message_Listener);
}

通常我会收到消息,因为我只是从选播切换到多播,但实际上我什么也没有收到。

共有1个答案

葛兴发
2023-03-14

如果使用AcitveMQ OpenWire NMS客户机,您没有将所做的奇怪的多播应用到URI,这将给您一个错误。如果您使用Session API,客户机就应该正常工作,而不是那种导致许多人遇到问题的令人困惑的SessionUtil API。

我会使用session.createTopic获得一个ITopic实例,然后使用该实例创建一个消费者,该消费者应该映射到Artemis多播地址,而不需要做任何事情。当然,您需要在发送任何消息之前进行订阅,因为如果发送消息时周围没有消费者,主题不会保留消息。

 类似资料:
  • > 下载Artemis2.13.0,预先创建组播地址测试,然后在此地址上创建组播队列123,使用控制台向123队列发送1消息 使用IDEA创建springboot项目,pom文件导入以下依赖项 pplication.properties添加配置 创建消费者以接收在队列123中预先创建的消息 我无法接收该消息,使用2.13.0artemis-jms-client将出现以下错误消息 Artemis创建

  • 我已经建立了AWS架构体系,以便每次对发电机数据库条目的更新都以启用重复数据删除的SQS先进先出队列结束。我还有一个测试来覆盖这个场景,在那里我清除了队列(队列可以从套装中的其他测试中获得更新。为了避免在收到正确的消息之前必须轮询大量的消息,我在运行测试之前清除队列),更新Dynamo Db,并在轮询队列时检查这些条目是否收到。这个测试是不稳定的,有时会失败,因为我发送的所有更新都没有从队列中收到

  • 我运行生产者,它生成N条消息,我在仪表板上看到它们。当我运行接收器时,它会接收来自队列的所有消息,并且队列为空。 我需要有多个生产者生成消息到同一个队列。多个客户从队列中接收消息。消息将被队列TTL删除。但是现在第一个接收者从队列中获取所有消息。我怎么能做到这一点?

  • 当消费者订阅一个主题时,一个多播队列会自动创建一个系统生成的名称。我想知道是否有可能控制这个名称生成以使它更友好(像consumer_idsession_ididx)。 我使用web控制台进行监视,在以前版本的ActiveMQ(在Artemis之前)中,我可以看到每个订阅主题的用户名称,这非常方便。 我以前在ActiveMQ 5.0的web控制台中看到的内容: 我现在在使用Artemis的控制台中

  • 你知道这里发生了什么吗?可以恢复消息和队列吗?如何使用ActiveMQ Artemis数据?所有队列/消息都丢失了。只有dlq/expiryqueue。 我们必须更改配置。所以我们开始更新从机。 为了将故障转移到从服务器以修复主服务器,我们执行了@16:32 在Master上有一些警告,但不多。 在从服务器上,我们可以看到一些超时和连接失败。不确定Slave是否接管了队列并且工作正常。 @16:4

  • 我们最近将应用程序从 Weblogic 迁移到了 JBOSS Fuse。作为此迁移的一部分,我们还必须将 JMS 实现更改为 Active MQ。由于某些约束,将请求发送到旧 Weblogic JMS 队列的客户端将无法进行更改以将请求发送到新的活动 MQ。有没有办法保持客户端不变(仅更改主机和端口以指向新服务器)并接收发送到Weblogic JMS队列的消息(当然没有weblogic服务器)并将