标签: wso2-message-broker

如何使用非固定值设置消息处理器间隔参数?(使用存储在property\registry\etc中的值)

我是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)

java esb wso2 wso2esb wso2-message-broker

6
推荐指数
1
解决办法
288
查看次数

java.lang.OutOfMemoryError:WSO2 MB上超出了GC开销限制

我最近一直在研究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下面的截图.

CPU使用情况的屏幕截图

我已检查heap dump的的WSO2 MB使用JProfiler为好.附上了它的截图. 在此输入图像描述

可能是什么问题?我应该做出哪些改变?像增加heap尺寸的东西?任何帮助都会受到重视.

编辑:我特此附加日志文件和堆转储.

java garbage-collection wso2 messagebroker wso2-message-broker

4
推荐指数
1
解决办法
864
查看次数

群集WSO2 EI ESB和WSO2 EI MB配置文件,WKA与多播?我的假设正确吗?

我必须创建并配置两个节点的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

2
推荐指数
1
解决办法
89
查看次数