我是WSO2 ESB的新手,我对消息处理器有以下问题.
我有这个消息处理器定义,每秒从队列中提取一个元素(以前存储的XML文档)并处理它调用名为transferProcessorSequence的序列.这是配置:
<?xml version="1.0" encoding="UTF-8"?>
<messageProcessor class="org.apache.synapse.message.processor.impl.sampler.SamplingProcessor" messageStore="transferFromMessageStore" name="transferFromMessageProcessor" xmlns="http://ws.apache.org/ns/synapse">
<parameter name="sequence">transferProcessorSequence</parameter>
<parameter name="interval">1000</parameter>
<parameter name="is.active">true</parameter>
<parameter name="concurrency">1</parameter>
</messageProcessor>
Run Code Online (Sandbox Code Playgroud)
它工作正常.我的问题是我不必每秒都做(它不应该是固定值)但必须使用我已存储到注册表中的值(最终我可以将此值存储在其他地方).
而不是这个设置:
<parameter name="interval">1000</parameter>
Run Code Online (Sandbox Code Playgroud)
我必须从注册表或类似的东西(也是属性)中检索存储的值.
我怎么能这样做?
**编辑1:我正在尝试遵循Jean-Michel提供的解决方案,但我发现在使用Maven构建我的项目时遇到了一些困难.
我创建了一个简单的Maven项目,这是我的pom.xml文件内容(此时我还没有实现Java类,我只是尝试编译一个空项目):
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany.toolkit</groupId>
<artifactId>SamplingProcessorHeaderRateLimitation</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>bundle</packaging>
<name>Sampling Processor Header Rate Limitation</name>
<description>Custom Sampling Mesageprocessor using response header to implement the rate limitation</description>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.0</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>2.3.4</version>
<extensions>true</extensions>
<configuration>
<instructions>
<Bundle-SymbolicName>com.sample.messageprocessor</Bundle-SymbolicName>
<Bundle-Name>com.sample.messageprocessor</Bundle-Name> …Run Code Online (Sandbox Code Playgroud) 我最近一直在研究WSO2 Message Broker(Ver:3.1.0),以便使用JMeterjms客户端发布和使用消息.所以我有我的发布者Java程序,我正在发布消息,我试图每秒发布4000条消息.如有必要,我可以提供代码段.
我通过 在无头模式下运行JMeter命令jmeter -n -t C:\Users\ctsadmin\Downloads\wso2MB\apache-jmeter-2.13\bin\GamesSubscriber.jmx -l C:\Users\ctsadmin\Downloads\wso2MB\apache-jmeter-2.13\bin\mytest_results.jtl来消耗这些消息.我也VisualVm打开了窗口,看看测试的内存消耗.在前15分钟,根据下面的图像,发布和消费已经确定,但在那之后,突然之间的VisualVm节目大肆宣传并耗尽内存.我附上了VisualVM下面的截图.
我已检查heap dump的的WSO2 MB使用JProfiler为好.附上了它的截图.

可能是什么问题?我应该做出哪些改变?像增加heap尺寸的东西?任何帮助都会受到重视.
编辑:我特此附加日志文件和堆转储.
java garbage-collection wso2 messagebroker wso2-message-broker
我必须创建并配置两个节点的WSO2 EI集群。特别是,我必须将ESB配置文件和MB配置文件聚类。
我对此有一些架构上的疑问:
聚类ESB配置文件的疑问:
我的假设基于此文档:https : //docs.wso2.com/display/EI640/Clustering+the+ESB+Profile
我发现此部分:
请注意,某些生产环境不支持多播。但是,如果您的环境支持多播,则将其用作成员身份方案没有任何问题
不支持多播的原因可能是什么?(所以我可以告知它可能存在的问题)。在表格中(在上一个链接内),在我看来,可能的问题可能与以下几点有关:
从系统\网络工程师处获取此信息是否足以决定是否继续使用多播选项?
使用多播而不是WKA,我需要执行与“安装注册表”和“创建\连接到数据库”有关的第一个部署方案(基于WKA的方案)中列出的相同配置步骤(如第一个文档链接所示) )?
在向群集添加新节点时,使用多播而不是WKA是否可以使我不停止服务?
群集MB配置文件:
据我了解,MB配置文件群集只能使用WKA作为成员身份方案。使用WKA是否意味着在向群集添加新节点时必须停止服务?
那么最后我们是否可以考虑ESB群集和MB群集两个不同的群集?ESB群集(如果使用多播配置)是否需要在添加新节点而停止MB群集以添加新节点时停止该服务?
wso2 cluster-computing wso2esb wso2-message-broker wso2-enterprise-integrator