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

Azure Service Bus主题上的非持久JMS订阅

湛文乐
2023-03-14

我正在尝试使用JMS在Azure Service Bus上创建非持久主题订阅。此功能最近已用于高级服务总线层。

    @Bean
    public ConnectionFactory connectionFactory() {
        ServiceBusJmsConnectionFactorySettings connectionFactorySettings = new ServiceBusJmsConnectionFactorySettings();
        connectionFactorySettings.setConnectionIdleTimeoutMS(20000);
        return new ServiceBusJmsConnectionFactory("[CONN-STRING]", connectionFactorySettings);
    }

    @Bean
    public JmsListenerContainerFactory containerFactory(ConnectionFactory connectionFactory) {
        DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
        factory.setConnectionFactory(connectionFactory);
        factory.setSubscriptionDurable(false);
        factory.setPubSubDomain(true);
        return factory;
    }

   @JmsListener(destination = "mytopicName", containerFactory = "containerFactory")
   public void listenerMethod() {...} 
    @Bean
    public ConnectionFactory connectionFactory() {
        JmsConnectionFactory connFactory = new JmsConnectionFactory("amqps://servicebusurl");
        connFactory.setUsername(KEY NAME);
        connFactory.setPassword(KEY);
        return connFactory;
    }
Open of resource:(JmsConsumerInfo: { ID:anid, destination = topicname}) failed: The messaging entity 'servicebusname:Topic:topicname|qpid-jms:receiver:ID:theid' could not be found.

我知道连接本身不是问题,因为我可以用这个连接工厂在主题中发布。我想知道是否有义务使用服务总线连接工厂或是否有解决方案。

共有1个答案

花永昌
2023-03-14

我查看了ServiceBusConnectionFactory是如何工作的,它使用了JMSConnectionFactory。它定制了JMSConnectionFactory的不同内容,所以我尝试以同样的方式定制它。起作用的是添加ConnectionFactory.SetExtension(jmsConnectionExtensions.amqp_open_properties.toString(),(connection,uri)->Map.of(“com.microsoft:is-client-provider”,true)

这使得侦听器使用连接工厂创建非持久的、非共享的主题订阅。

 类似资料:
  • 18:14:15,050警告 [org.springframework.JMS.listener.DefaultMessageListenerContainer](DefaultMessageListenerContainer-145)为目标“主题名称”设置JMS消息侦听器调用程序失败-正在尝试恢复。原因:[brm.10.2209]JMS:持久订阅“ConnectionFactory##Subsc

  • 我需要为ActiveMQ创建一个主题和一个持久订阅者,我的问题是我不知道在哪里指定它。我可以创建主题并使用消息,但是当我关闭订阅者然后继续发送消息并再次打开订阅者时,它不会读取它们。 这是我目前掌握的情况: 发送消息: 接收消息: 我已经阅读了这篇文章,我明白我需要创建持久订阅者。 我也读过spring文档 我认为它与(我没有实现,我使用的是默认配置)有关,文档显示: 但是我似乎找不到在哪里创建持

  • 在我们的业务需求中,我们需要将更新传输到分布在全国各地的数千个客户端。问题是,许多这些客户端使用3G网络连接到我们,因此,发生了许多连接/断开连接...我们需要提供的更新是诸如“企业A不能再兑现”或“企业B能够再次兑现”之类的东西,我们正在考虑使用ActiveMQ持久主题来提供这些更新。我的理解是,一旦客户端连接到持久主题,即使他断开连接,每当他回来时,他都会在脱机时收到发送到该主题的消息。最大的

  • 我正在试验消息驱动Beans,以便从外部ActiveMQ实例接收主题订阅消息。 我的测试首先从队列订阅开始,它工作得很好。 然后我想尝试主题订阅,但我无法让它工作。 这就是我所拥有的: 会议记录。xml 这是MDB: 我不知道为什么,但从日志中我可以看到,TomEE创建了一个队列,而不是一个主题: 另一个证明是,当我添加持续时间配置时,服务器不会启动: 然后服务器抱怨这不适合配置类型javax.j

  • 我正在使用网络逻辑10.3。我正在尝试配置一个持久订阅,其中包含由 jdbc 存储(在 Oracle DB 中)支持的持久消息。我有一个主题,MDB 正在作为持久订阅者侦听该主题。在场景-1下:如果我发送消息,它会命中MDB。 在场景2中:我挂起了MDB,希望发送到主题的消息只要不被MDB(它是唯一注册的持久订阅者)使用,就会一直存在。但是当我向主题发送消息时,它短暂地出现在那里,然后就消失了(我

  • 目前,我已经开始使用ActiveMQ处理JMS主题。我已经通过JAVA代码(如下所述)创建了发布者和持久订阅者,并且在订阅者端也收到了消息。 Publisher.Java 订阅者.java 我对以下主题有一些疑问, 如何检查有多少订阅者使用 Java JMS 在主题中主动查找消息? 如何从主题中获取活动和持久订阅者列表? 我们是否可以删除主题中发布的消息? 在这些情况下帮助我。 提前致谢。