weblogic jms消息 删除_JMS相关处理器

be27ba2a19186747250fb482f4e845b5.png

听着窗外100岁老奶奶的丧乐,想着去年爷爷的逝去。感叹着人的一生实在太短了,而想做的事情还有太多太多.....默默的进入本文正题吧,一篇关于JMS相关处理器的学习记录。

什么是JMS?

JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。Java消息服务是一个与具体平台无关的API,绝大多数MOM提供商都对JMS提供支持。

NIFI和JMS相关的处理器有哪些?

GetJMSQueue   GetJMSTopic   PutJMS  PublishJMS   ConsumeJMS

处理器详情,见附录一~附录五

JMSConnectionFactoryProvider

controller service,见附录六

环境准备

第一步:找到starts最多的镜像

docker search activemq

第二步:下载镜像

docker pull webcenter/activemq

第三步:启动镜像

docker run -d --name activemq -p 61617:61616 -p 8162:8161 webcenter/activemq:latest

备注:

  • 61616是 activemq 的容器使用端口(映射为61617)

  • 8161是 web 页面管理端口(对外映射为8162)

7cfdfd94227ec31b1c90e3d73a72a10f.png

ed0403e7d880eef44b07ab91b4abb0b9.png

第四步:验证访问ip:8162

83b04950f8fa5bb4267cdd5c26e57139.png

用户名和密码都是admin

00886d08317a5670367721949fb2c601.png

第五步:创建一个queue

65808cbd1567c74e9c708b3e02349ddc.png

e299c2b5ad03caa35f03fd874c3b4344.png

第六步:创建一个topic

76ad43e14d9678446bfd4ac584a0f377.png

6a72bc0d9a54476ff29fe794f3f2bf64.png

实战一:推送数据到主题并消费

61156c29518da35de8896ef58f7d29cd.png

备注:activemq的主题模式,类似是订阅模式。推送数据给主题,主题数据会推送给所有订阅者。区别kafka的主题模式,activemq只有当前处于订阅才能收到消息,不能重复推送数据,后订阅的不能消费到历史数据。

两个重要处理器的配置

fa2d619fb6d67859e4b082268ed32eb2.png

PutJMS配置

5112f1317f3398fb19c49f79e863ca2b.png

GetJMSTopic配置

URL:activemq安装的时候暴露了两个端口,一个是web访问端口,一个就是这个用于消息推送的端口。url的格式是tcp://${your ip or hostname}:${your-port};

Destination Name:根据Destination Type来看,Destination Type是Topic就是主题名称,Destination Type是队列就是队列名称;

Destination Type:主题或者队列模式;

备注:GetJMSTopic会长期占用一个线程,所以GetJMSTopic不适合太多;

主题不需要提前创建,默认情况下不存在该主题的时候会自动创建;

实战二:推送数据到队列并消费

bddf2c380fededca234c017c26f4fc1b.png

备注:activemq的队列模式,多个消费者情况下,走的是轮询策略。多个GetJMSQueue的话,发送到队列的数据,GetJMSQueue会轮流消费

74b60081618314895e8931dbe3137aa5.png

PutJMS配置

cf8a940621d8b66a46cc5705202c3981.png

GetJMSQueue配置

实战三:JMS规范自定义jar模式

f8316a651cb317f1b41cf15846ef7854.png

备注:理论支持所有的JMS规范的数据推送和读取

2f2a876fbc8dd1f0ec8dbe388909ef95.png

JMSConnectionFactoryProvider配置

287ddf3e156b5e7c64f0129f6fdcaac8.png

PublishJMS配置

74670c2f1f9d599cdd7be8eb74eeae9d.png

ConsumeJMS配置

备注:此种模式尤其重要,理论上只要支持jms开发规范实现的数据处理方式,都能执行,所以这个对于新中间件的支持很动态,对于自定义模式最友好,因为我们可以自己按照JMS规范去开发相关的数据推送和读取单元;

实战一和实战二用到的处理器未来版本就会被废弃了

附录一:PutJMS

JMS Provider

ActiveMQ

URL

JMS服务器的URL

格式:tcp://ip:port

Destination Name队列名称或者主题名称
Destination Type

Queue/Topic

Communications Timeout会话超时时间
Message Batch Size一次拉取数据条数
Username用户名
Password密码
SSL Context Service为了获得SSL上下文而使用的Controller Service
Message TypeJMS消息的类型
Message Priority消息优先级
Reply-To Queue回复队列
Max Buffer Size一条消息最大体积默认1MB
Message Time to Live消息在被删除之前应该在目标上保留的时间;如果未指定,该消息将永不过期。
Copy Attributes to JMS PropertiesFlowFile属性是否应该转换为JMS消息属性。如果为true,则所有属性均以“ jms”开头。将在JMS消息上设置为“属性”(不带“ jms。”前缀)。如果存在以相同值开头但以“ .type”结尾的属性,则该属性将用于确定JMS消息属性类型。
Client ID Prefix客户端请求前缀


附录二:GetJMSQueue

JMS Provider

ActiveMQ

URL

JMS服务器的URL

格式:tcp://ip:port

Destination Name队列名称
Communications Timeout会话超时时间
Message Batch Size一次拉取数据条数
Username用户名
Password密码
SSL Context Service为了获得SSL上下文而使用的Controller Service
Acknowledgement ModeJMS确认模式。使用自动确认可能会导致在NiFi重新启动时丢失消息,但可能会提供比“客户端确认”更好的性能。
Message Selector为了缩小拉出的消息而使用的JMS消息选择器
Copy Attributes to JMS PropertiesFlowFile属性是否应该转换为JMS消息属性。如果为true,则所有属性均以“ jms”开头。将在JMS消息上设置为“属性”(不带“ jms。”前缀)。如果存在以相同值开头但以“ .type”结尾的属性,则该属性将用于确定JMS消息属性类型。
Client ID Prefix客户端请求前缀

附录三:GetJMSTopic

JMS Provider

ActiveMQ

URL

JMS服务器的URL

格式:tcp://ip:port

Destination Name主题名称
Communications Timeout会话超时时间
Message Batch Size一次拉取数据条数
Username用户名
Password密码
SSL Context Service为了获得SSL上下文而使用的Controller Service
Acknowledgement ModeJMS确认模式。使用自动确认可能会导致在NiFi重新启动时丢失消息,但可能会提供比“客户端确认”更好的性能。
Message Selector为了缩小拉出的消息而使用的JMS消息选择器
Copy Attributes to JMS PropertiesFlowFile属性是否应该转换为JMS消息属性。如果为true,则所有属性均以“ jms”开头。将在JMS消息上设置为“属性”(不带“ jms。”前缀)。如果存在以相同值开头但以“ .type”结尾的属性,则该属性将用于确定JMS消息属性类型。
Client ID Prefix客户端请求前缀
Use Durable Subscription如果为true,则与指定主题的连接将使用“持久订阅”,以便在不提取消息时将它们排队


附录四:PublishJMS

Connection Factory Service用于获取连接工厂的Controller Service
Destination NameJMS目标的名称
Destination TypeJMS目标的类型。可以是“ QUEUE”或“ TOPIC”之一。通常由管理员提供。默认为“ QUEUE”
User Name用户名
Password密码
Connection Client ID要在连接上设置的客户端ID(如果已设置)。对于持久的非共享消费者,这是强制性的,对于所有其他消费者,它是可选的,通常对于共享消费者,这是不可取的。有关更多详细信息,请参见JMS规范。
session Cache size不推荐使用此属性,并且对处理器不再有任何影响。它将在更高版本中删除。
Message Body TypeJMS消息正文的类型
Character Set字符集 编码
Allow Illegal Characters in Header Names指定是否应将标头名称中的非法字符发送到JMS代理。通常是连字符和句号。
Attributes to Send as JMS Headers (Regex)指定用于确定应作为JMS标头发送的FlowFile属性名称的正则表达式
JNDI Initial Context Factory ClassJNDI初始上下文工厂类的完全限定的类名(java.naming.factory.initial)
JNDI Provider URL要使用的JNDI提供程序的URL(java.naming.provider.url)
JNDI Name of the Connection Factory要查找连接工厂的JNDI对象的名称
JNDI / JMS Client Libraries指定要添加到ClassPath以便加载JNDI / JMS客户端库的jar文件和/或目录(定义为逗号分隔的列表)
JNDI Principal用JNDI(java.naming.security.principal)进行身份验证时要使用的主体
JNDI Credentials使用JNDI进行身份验证时要使用的凭证(java.naming.security.credentials)
JMS Connection Factory Implementation ClassJMS ConnectionFactory实现类的标准名称(例如org.apache.activemq.ActiveMQConnectionFactory)
JMS Client Libraries具有附加资源(例如JAR,配置文件等)的目录路径,该资源将添加到类路径(定义为用逗号分隔的值列表)中。这些资源通常代表ConnectionFactory实现的目标JMS客户端库
JMS Broker URI‍指向JMS消息代理的网络位置的URI
JMS SSL Context Service‍SSL上下文服务用于为TLS / SSL连接提供客户端证书信息

附录五:ConsumeJMS

Connection Factory Service用于获取连接工厂的Controller Service
Destination NameJMS目标的名称
Destination TypeJMS目标的类型。可以是“ QUEUE”或“ TOPIC”之一。通常由管理员提供。默认为“ QUEUE”
User Name用户名
Password密码
Connection Client ID要在连接上设置的客户端ID(如果已设置)。对于持久的非共享消费者,这是强制性的,对于所有其他消费者,它是可选的,通常对于共享消费者,这是不可取的。有关更多详细信息,请参见JMS规范。
session Cache size不推荐使用此属性,并且对处理器不再有任何影响。它将在更高版本中删除。
Character Set字符集 编码‍
Acknowledgement ModeJMS确认模式。使用自动确认可能会导致在NiFi重新启动时丢失消息,但可能会提供比“客户端确认”更好的性能。‍
Durable subscription如果目的地是主题(如果存在),则使它持久耐用。@see https://docs.oracle.com/javaee/7/api/javax/jms/Session.html#createDurableConsumer-javax.jms.Topic-java.lang.String‍
Shared subscription如果目的地是主题(如果存在),则使其与消费者共享。@see https://docs.oracle.com/javaee/7/api/javax/jms/Session.html#createSharedConsumer-javax.jms.Topic-java.lang.String‍
Subscription Name如果目的地为Topic且是共享的或持久的,则使用的订阅名称‍
Timeout放弃之前,等待等待多长时间,才能使用来自远程代理的消息‍
Error Queue NameJMS队列的名称,如果设置了该名称,则将路由未处理的消息。通常由管理员提供(例如,“ queue:// myErrorQueue”或“ myErrorQueue”)。仅在“目标类型”设置为“ QUEUE”时适合用。‍
JNDI Initial Context Factory ClassJNDI初始上下文工厂类的完全限定的类名(java.naming.factory.initial)
JNDI Provider URL要使用的JNDI提供程序的URL(java.naming.provider.url)
JNDI Name of the Connection Factory要查找连接工厂的JNDI对象的名称
JNDI / JMS Client Libraries指定要添加到ClassPath以便加载JNDI / JMS客户端库的jar文件和/或目录(定义为逗号分隔的列表)
JNDI Principal用JNDI(java.naming.security.principal)进行身份验证时要使用的主体
JNDI Credentials使用JNDI进行身份验证时要使用的凭证(java.naming.security.credentials)
JMS Connection Factory Implementation ClassJMS ConnectionFactory实现类的标准名称(例如org.apache.activemq.ActiveMQConnectionFactory)
JMS Client Libraries具有附加资源(例如JAR,配置文件等)的目录路径,该资源将添加到类路径(定义为用逗号分隔的值列表)中。这些资源通常代表ConnectionFactory实现的目标JMS客户端库
JMS Broker URI‍指向JMS消息代理的网络位置的URI
JMS SSL Context Service‍SSL上下文服务用于为TLS / SSL连接提供客户端证书信息


附录六:JMSConnectionFactoryProvider

JMS Connection Factory Implementation ClassJMS ConnectionFactory实现类的标准名称(例如org.apache.activemq.ActiveMQConnectionFactory)
JMS Client Libraries具有附加资源(例如JAR,配置文件等)的目录路径,该资源将添加到类路径(定义为用逗号分隔的值列表)中。这些资源通常代表ConnectionFactory实现的目标JMS客户端库
JMS Broker URI指向JMS消息代理的网络位置的URI。ActiveMQ的示例:“ tcp:// myhost:61616”。IBM MQ的示例:“ myhost(1414)”和“ myhost01(1414),myhost02(1414)”。
JMS SSL Context ServiceSSL上下文服务用于为TLS / SSL连接提供客户端证书信息。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值