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

如何在Spring boot中向JMSListener注释动态添加不同的目标?

严昊昊
2023-03-14

我正在开发一个从Azure服务总线读取消息的应用程序。该应用程序是使用spring boot、spring jms和Qpid jms客户端创建的。我能够正确地从队列中读取消息,没有任何问题。PFB我用来阅读信息的代码。

@Service
public class QueueReceiver {
@JmsListener(destination = "testing")
public void onMessage(String message) {
    if (null != message) {
        System.out.println("Received message from Queue: " + message);
    }
}}

问题是,对于不同的环境,我们有不同的目的地,例如用于开发的测试、用于qa的测试qa和用于生产的测试产品,所有这些值都作为azure提供。queueName在不同的应用程序-(ENV)中。分别为。我想在JmsListener注释中动态地将这些目标传递给目标。当我尝试使用

@Value("${azure.queueName}")
private String dest;

并将dest传递给注释,如JmsListener(destination=dest)

我得到注释属性JmsListener的值。目标必须是常量表达式Error。在搜索了这个错误后,我发现我们无法将动态值传递给注释。请帮助我如何解决此问题或任何其他解决方案。

共有2个答案

郑和泰
2023-03-14

您可以使用应用程序中定义的动态名称。属性文件。例如:

@JmsListener(destination = "${queue.name}")

因为在这里你不能访问任何类变量,所以这是最好的选择。

姚向晨
2023-03-14

使用

destination="${azure.queueName}"

即直接把占位符放在注释中。

 类似资料:
  • 有没有办法动态设置@JsonProperty注释,例如: 或者我可以简单地重命名实例的字段吗?如果是这样,请给我一个主意。此外,可以以何种方式与序列化一起使用?

  • 我有一个批处理文件,它运行几个python脚本来修改表。 > 我还想添加注释,特别提醒他们在运行批处理文件之前需要在批处理文件中更新的变量。我知道我可以使用。但这看起来更像是为了在用户运行之后更新进度。 是否有更恰当地添加注释的语法?

  • 我想在我的pandas条形图中添加百分比值-以及计数。然而,我不能这样做。我的代码如下所示,到目前为止,我可以得到要显示的计数值。有人能帮我在每个条显示的计数值旁边/下面添加相对%值吗? 我的代码的输出如下所示。如何在显示的每个计数值旁边添加%值?

  • 我有一个批处理文件,它运行了几个执行表修改的python脚本。 是否有更恰当地添加注释的语法?

  • 问题内容: 因此,我试图对基于Spring(v4.1.6)的JMS处理进行一些集成测试。 这是一个非常标准的Spring设置,带有带注释的方法,带有的设置为,因此只允许一个侦听线程。 现在,我利用ActiveMQ的嵌入式代理不依赖任何外部jms代理来使测试随时随地运行(我应该从事市场营销工作)。 所以所有的电线都很好,然后我进行了JUnit测试: 我发送了消息,但随后我需要以某种方式等待带注释的方

  • 我在iOS11中使用PDFKit开发了一个可以显示pdf文件添加注释的应用程序。现在我想给pdf页面添加一个图像注释,我认为注释子类型应该是stamp。但是在PDFKit中我找不到“”这样的属性来设置,唯一与戳注释相关的属性是。有人能帮忙吗?