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

在 Apache Flume 中获取 JMS 标头

潘飞英
2023-03-14

我正在尝试使用Apache Flume使用JMS消息(IBM Websphere MQ)并将数据存储到HDFS。在阅读消息时,我只能看到消息的正文,而不能看到消息的标题内容。

是否可以使用Apache Flume读取带有头属性的jms消息?

我的配置

# Source definition
u.sources.s1.type=jms
u.sources.s1.initialContextFactory=ABC
u.sources.s1.connectionFactory=<my connection factory>
u.sources.s1.providerURL=ABC
u.sources.s1.destinationName=r1
u.sources.s1.destinationType=QUEUE
# Channel definition
u.channels.c1.type=file
u.channels.c1.capacity=10000000
u.channels.c1.checkpointDir=/checkpointdir
u.channels.c1.transactionCapacity=10000
u.channels.c1.dataDirs=/datadir
# Sink definition
u.sinks.r1.type=hdfs
u.sinks.r1.channel=c1
u.sinks.r1.hdfs.path=/message/%Y%m%d
u.sinks.r1.hdfs.filePrefix=event_
u.sinks.r1.hdfs.fileSuffix=.xml
u.sinks.r1.hdfs.fileType = DataStream
u.sinks.r1.hdfs.writeFormat=Text
u.sinks.r1.hdfs.useLocalTimeStamp=TRUE

共有1个答案

柯子琪
2023-03-14

有相当多的JMS消息类型,如这里的“表30–2 JMS消息”所示。

FlumeDefaultJMSMessageConver使用TextMessage如下所示,供您参考:

...
else if(message instanceof TextMessage) {
      TextMessage textMessage = (TextMessage)message;
      event.setBody(textMessage.getText().getBytes(charset));
    } 
...

TextMessage只提供消息正文。

依我看,你有两个选择:

  1. 如果可能的话,在正文本身中发送消息头、标头值对,并按原样使用 “DefaultJMSMessageConverter”。
  2. 通过编写自定义JMSMessageConverter构建自己的“flume-jms-source.jar”,并将“消息”类型转换为javax.jms.Message,获取JMS标头,在SimpleEvent中设置它们。

希望这能给你一些指导。

 类似资料:
  • 问题内容: 斯威夫特新手。 我在执行一项琐碎的任务时遇到了麻烦。我要做的就是 按需 获取鼠标光标的x,y坐标。我宁可 不要 等到鼠标移动事件触发后再抓住指针的坐标。 将不胜感激! 问题答案: 您应该看看NSEvent方法mouseLocation 编辑/更新: Xcode 11•Swift 5.1 如果您希望在应用程序处于活动状态时监视任何窗口上的事件,则可以添加与mouseMoved掩码匹配的L

  • 我正在使用Spring集成连接到JMS消息队列。我使用的JMS提供程序是Apache ActiveMQ。 我有以下读取JMS消息的类(具有ServiceActivator方法): 在这里,实体是我的应用程序中的POJO。 从JMS队列读取消息时,我得到以下异常: 我应该如何解决这个问题? 谢谢

  • 问题内容: 我是python的新手,使用Python Flask并生成REST API服务。 我想检查发送给客户端的授权标头。 但是我找不到在flask中获取HTTP标头的方法。 感谢获得HTTP标头授权的任何帮助。 问题答案: 行为就像字典一样,因此你也可以像使用任何字典一样获取标头:

  • 问题内容: 我正在尝试使用jQuery在元素中获取鼠标的相对坐标。 我的代码似乎无法正常运行,并且没有控制台错误。 码: index.html ja.js(jQuery函数) 零件 我听说jQuery在反应方面表现不佳。我的语法正确还是完全有更好的方法? 谢谢。 问题答案: 正如其他人提到的那样,问题是当jQuery尝试附加事件侦听器时,react尚未将您的组件呈现给DOM。 您根本不需要jQue

  • 问题内容: 是否可以使用标准Python库在Windows中获取整体光标位置? 问题答案: 这将检索屏幕坐标中的光标位置-点=(x,y) 检索有关全局游标的信息。 链接: http://msdn.microsoft.com/zh-cn/library/ms648389(VS.85).aspx http://msdn.microsoft.com/zh-CN/library/ms648390(VS.8

  • 问题内容: 我正在尝试获取Selenium Webdriver中的标题。类似于以下内容: 我需要使用网络驱动程序,因为它支持Flash和测试网页所需的其他功能。这是我到目前为止在Selenium中拥有的东西: 我还看到了一些其他建议,建议运行整个selenium服务器以获取此信息(https://github.com/derekargueta/selenium- profiler )。我如何使用与