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

部署时生成客户端ID

李睿
2023-03-14

我有一个WildFly集群,它应该将所有主题消息共享给不同的节点,并在一个节点离线时保存它们。< br >在这种情况下,我需要耐用的订阅服务器。

@MessageDriven(
    activationConfig = {
        @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Topic"),
        @ActivationConfigProperty(propertyName = "destination", propertyValue = "jms/Topic"),
        @ActivationConfigProperty(propertyName = "subscriptionDurability", propertyValue = "Durable"),
        @ActivationConfigProperty(propertyName = "subscriptionName", propertyValue = "anam123e"),
        @ActivationConfigProperty(propertyName = "clientID", propertyValue = "abcd"),
    }
)

我注意到如果我使用相同的clientID,系统会进行负载平衡。如果我将clientID或认购名称更改为唯一值,它就可以工作。

那么什么时候使用唯一的clientID,什么时候使用subscriptionName
我的答案是,每个节点的唯一clientID和节点上每个线程的subscriptionName。

此外,我想根据类似于以下内容的野蝇节点名称生成一个clientID:

@ActivationConfigProperty(propertyName = "clientID", propertyValue = "abcd-" + WildFly.getInstance().getNodeName()),

有办法实现吗?

共有1个答案

谷梁浩思
2023-03-14

有一个真正简单的解决方案可用:物业更换

您需要在standalone.xml中启用它:

<subsystem xmlns="urn:jboss:domain:ee:2.0">
    <annotation-property-replacement>true</annotation-property-replacement>
    ...
</subsystem>

新的批注可以如下所示:

@MessageDriven(
    activationConfig = {
        @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Topic"),
        @ActivationConfigProperty(propertyName = "destination", propertyValue = "jms/Topic"),
        @ActivationConfigProperty(propertyName = "subscriptionDurability", propertyValue = "Durable"),
        @ActivationConfigProperty(propertyName = "subscriptionName", propertyValue = "aname"),
        @ActivationConfigProperty(propertyName = "clientID", propertyValue = "abcd-${jboss.node.name}"),
    }
)
 类似资料:
  • 本章介绍 kubectl 的安装方法。 OSX 可以使用 Homebrew 或者 curl 下载 kubectl: brew install kubectl 或者 curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes

  • 我有一个这样的歌剧API: OpenAPI生成器Maven的插件为schema对象创建了一个请求类“GenerateTokenRequest”,但在API实现类中它没有使用。它生成一个方法,将所有请求的字段作为参数列表。方法如下: 所以,在这种情况下,请求类“GenerateTokenRequest”被生成,但从未使用过。任何人都可以告诉我为什么?有一种使用我的请求类的替代方法吗?我可以在Open

  • 嗯,首先,对不起我的英语不好。 “enderecodao.java”: 和ENDERECO的WebService“servicoEnderEco.java”:

  • 在我们的Spring应用程序中,我们依赖外部系统。我们希望为该系统的请求设置超时,但无法确定如何配置。 我们使用这个: 我已经尝试过这个:如何使用泽西2. x设置连接和读取超时?和许多其他建议,但无法让它工作。任何建议都将不胜感激。 不工作的更新: 也

  • 问题内容: 我正在使用Node.js在JavaScript中实现客户端应用程序。因为我将在许多计算机上部署该软件,所以我希望最小化我分发的软件包的大小。特别是,我想从node_modules中删除所有不必要的文件。 对于初学者来说,这意味着对依赖项树进行重复数据删除和修剪,这对我来说可以做。但我也想删除所有文件,尤其是部署不需要的其他文件。在我使用的许多程序包中,都有大量的测试,文件的多个版本(最

  • 我对Spring集成的设想是: 使用自定义协议(大小和内容)发送数据的十个生产者 我必须解码这个自定义协议,然后处理结果。 所以我尝试了很多配置,目前最好的配置如下: 序列化类为: 我使用此代码来测试服务器: 当我用一个线程执行此操作时,如果我尝试执行多个线程,则效果很好,如: spring集成服务器卡住了,我有以下警告: 而且它不工作,服务器无法接收消息。 我错在哪里?非常感谢。 编辑 我这样修