Inbound endpoint configuration, reading coordination parameter value from a file - wso2

I have an inbound endpoint configuration and I want to read the value of the coordination parameter from a file.
I can read the java.naming.provider.url value from a file with this way
<parameter name="java.naming.provider.url" key="conf:/configurations/inbound/InboundJNPURLVal"/>
I tried same structure for the coordination parameter value,
<parameter name="coordination" key="conf:/configurations/inbound/InboundCoordinationVal"/>
Although the InboundCoordinationVal file content is "false", the value of the coordination parameter was "true" in the WSO2 management console.
Is there any way to manage this value of the coordination parameter?
Thanks for any idea!

Related

Disable/block the logs sent from fluentd sidecar container to Log Explorer in GCP

Holla amigos, In Google Cloud GKE I have 3 containers inside a pod. The first one is the application, the second is the istio-proxy sidecar, and the third one is the fluentd sidecar. The scenario is simple where I would like to block/stop the logs that are being sent from the fluentd container to log explorer (GCP logging console). In the meantime, I would still like my fluentd store the logs inside the pod, so that I can check the logs manually using gke exec command. Please let me know if it is possible....
If your container is writing the logs at a specific path or on the Hostpath file system
you can use the fluentd to parse that specific application logs from path where the application container is writing. it depends on the application and your architecture.
You can also use the exclude_path to exclude
Here sharing one ref example for fluentd config
<source>
#type tail
path /var/log/app_name/*.log
exclude_path ["/var/log/istio-*"]
tag "kubernetes.*"
refresh_interval 1s
read_from_head true
follow_inodes true
<parse>
#type json
time_format %Y-%m-%dT%H:%M:%S.%NZ
keep_time_key true
</parse>
</source>
You can also set the filter as per requirement and push it further
<filter kubernetes.**>
#type grep
<regexp>
key $.kubernetes.namespace_name
pattern /^my-namespace$/
</regexp>
<regexp>
key $['kubernetes']['labels']['example.com/collect']
pattern /^yes$/
</regexp>
</filter>

wso2 MB's topic behaves as queue

I am new to Wso2 EI and MB. I have named a 'topic.salesOrderTopic=salesOrderTopic' in jndi properties file. And, i have configured a message store in EI having parameters as below :
<messageStore class="org.apache.synapse.message.store.impl.jms.JmsStore" name="salesOrderJmsStore" xmlns="http://ws.apache.org/ns/synapse">
<parameter name="store.jms.destination">salesOrderJmsStore</parameter>
<parameter name="store.producer.guaranteed.delivery.enable">false</parameter>
<parameter name="store.jms.cache.connection">false</parameter>
<parameter name="java.naming.factory.initial">org.wso2.andes.jndi.PropertiesFileInitialContextFactory</parameter>
<parameter name="connectionfactory.QueueConnectionFactory">amqp://admin:admin#clientID/carbon?brokerlist='tcp://localhost:5675'</parameter>
<parameter name="store.jms.JMSSpecVersion">1.1</parameter> </messageStore>
I have also configured two message processor in my machine (deployed with same proxy which publishes using the above message store). I could also see two consumers in MB. Strange thing is only one processor is processing the published message. Another one is not. If i deactivate the active processor, the other processor is processing the message with no problem. Can you guys help me to understand where i am going wrong ?? I am expecting publish-subscribe model to work.
note : In MB, the salesOrderTopic is listed in both queue's list and topic list.

Message Forwarding Processor maximum redelivery attempts issue

I'm working on a project involving message stores and message forwarding processors within WSO2 ESB 4.8.1. The issue I've noticed is that in case of a problem with the endpoint specified for the processor, the message gets redelivered four times the number I set for max.delivery.attempts parameter before the processor deactivates.
The definition from this page says that the number represents the "Maximum redelivery attempts before deactivating the processor".
Here is my message processor configuration:
<messageProcessor name="msgProcessor" class="org.apache.synapse.message.processor.impl.forwarder.ScheduledMessageForwardingProcessor" targetEndpoint="myEP" messageStore="messageStoreTest" xmlns="http://ws.apache.org/ns/synapse">
<parameter name="interval">200</parameter>
<parameter name="client.retry.interval">5000</parameter>
<parameter name="max.delivery.attempts">1</parameter>
<parameter name="message.processor.reply.sequence">main</parameter>
<parameter name="message.processor.fault.sequence">fault</parameter>
<parameter name="is.active">true</parameter>
</messageProcessor>
Anybody else noticed this? Thank you.
This seems to be a bug in the Message Processor component of the ESB, affecting the 4.9.0 version.
The JIRA issue for this is located here, with the bug being currently unresolved.

WSO2 ESB Multiple instances of proxy service

We are using WSO2 ESB and as transport we have WebSphere MQ which is accessed using JMS.
Problem is that each proxy service works in one thread with WebSphere MQ and because of that we have performance issues.
How can we start multiple instances of proxy service without deploying multiple copies of it? Maybe there are some hidden configuration parameters?
In addition to already mentioned parameter
<parameter name="transport.jms.ConcurrentConsumers">2</parameter>
you might need to add another one:
<parameter name="transport.jms.IdleTaskLimit">2147483647</parameter>
This parameter represents number of idle message read attempts per thread. When counter of such idle read attempts becomes equal to this parameter, the thread stops reading messages (if it is not the only reader).
Given that, setting this parameter to the upper limit of java int provides you with virtually infinite reading by all the threads.
You should define this parameter in your proxy conf :
<parameter name="transport.jms.ConcurrentConsumers">2</parameter>
WSO2 use one consumer by default
Have a look there : http://mmalithh.blogspot.fr/2013_05_01_archive.html

WSO2 ESB warning, SystemValidator Could not validate the system for configuration parameter : CPU

In my ESB service (v 4.6.0) error log file (wso2-esb-errors.log), have the warning:
SystemValidator Could not validate the system for configuration parameter : CPU
What is it meaning ? And how can I fix it ?
Thanks.
This can be happened due to your configuration. You can find the recommended system configuration values which are specified in ESB_HOME/repository/conf/etc/config-validation.xml file.
<Validator class="org.wso2.carbon.core.bootup.validator.SystemValidator">
<Parameter id="CPU">1024</Parameter>
<Parameter id="RAM">2048</Parameter>
<Parameter id="swap">256</Parameter>
<Parameter id="freeDisk">1024</Parameter>
<Parameter id="ulimit">1000</Parameter>
</Validator>
Are using the IBM JDK?. If so the reason could be the one reported at[1].
[1] https://wso2.org/jira/browse/CARBON-14125
During SystemValidator phase what actually happens is Carbon server check the configuration of the running system with the recommended settings on ESB_HOME/repository/conf/etc/config-validation.xml.
Since you haven't change the config file according to your case server has failed to validate CPU performance. Possible situation can be your CPU performance is below the recommended value(1024 MHz). As a fix you may need to run your ESB server on machine with recommended settings.
Thank you.