azure - 如何从 Spring JMS 设置 Azure ServiceBus 的 ContentType

标签 azure jms azureservicebus spring-jms

我正在尝试使用库azure-servicebus-jms-spring-boot-starter向主题发送消息。一切正常,但是消息以 application/xml 类型存储在订阅中,我找不到如何正确设置它以将它们存储为 application/json 的方法。 我已尝试将消息转换器配置为按照描述发送 ContentType here但这也行不通。

  @Bean
  public MessageConverter jacksonJmsMessageConverter() {
    final MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter(){
      @Override
      protected TextMessage mapToTextMessage(Object object, Session session, ObjectWriter objectWriter)
          throws JMSException, IOException {
        final TextMessage message = super.mapToTextMessage(object, session, objectWriter);
        message.setStringProperty("ContentType", "application/json");
        return message;
      }
    };
    converter.setTargetType(MessageType.TEXT);
    converter.setTypeIdPropertyName("_type");
    converter.setObjectMapper(objectMapper);
    return converter;
  }

message

最佳答案

没有公开的方法可以设置从 Qpid JMS 客户端发送的消息的内容类型。客户端本身使用此字段作为 JMS 映射到 AMQP 的一部分,以区分其发送的某些消息类型并确定在接收时应将某些消息呈现为什么。

技术上可以使用反射来获取,因此您必须从 JmsMessageFacade 类使用的 API 的值不是公开的,并且可能会随着任何版本的发布而改变,因此选择这样做会带来巨大的风险。

关于azure - 如何从 Spring JMS 设置 Azure ServiceBus 的 ContentType,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65938223/

相关文章:

azure - 从本地 Windows 10 盒子连接到 azure 服务总线失败

azure - 存储和事件网格之间的弹性

azure - 使用 Java Spring 应用程序连接到 Azure 服务总线 - 超时

Windows Azure 运行一次例程

azure - 如何将表列转换为一个新列

jms - 如何从 JMS 队列中删除消息?

java - Spring配置文件错误

azure - 如何检查代码是否在 Azure 网站上运行

python - 没有名为 azure.cosmos.cosmos_client 的模块

jms - ActiveMQ 日志日志大小