How to limit max connection allowed in WSO2 ESB? - wso2

I want to limit the number of connection received by WSO2 ESB. Is there any property to be able to limit by properties (axis2, carbon, etc.)?

This answer is based on the understanding gained from your comment. So, I assumed your backend has a limit of requests which can be processed which is less than what the ESB can accept.
There are two option:
Similar to catalina-server.xml for tomcat, there is pass-thru.properties file in the conf folder where you can tune certain parameters to suite the load you expect and also to match the capabilities of the VM you have hosted the ESB.
https://docs.wso2.com/display/ESB490/Configuring+passthru-http.properties
One disadvantage of above option would be, some of your requests will not be accepted by the ESB if its too busy. To overcome that, you can use a queueing mechanism. i.e. You accept all the requests and store them in a message store (a queue). Then configure a message processor to retrieve those messages and process. Disadvantage of this option is, its difficult to cater a request response scenario.
As Bhathiya has mentioned, you can front your ESB with a WSO2 API Manager and throttle the requests too.

Until ESB 4.8.1, it had throttling feature. You also can use Throttling Mediator in each service.
Another option is to front ESB by WSO2 API Manager which has complete throttling support.

Related

Wso2 API Manager : API Produce and Consume JMS Messages

I have following requirement, is this possible to achieve in WSo2 API Manager. Please advise. I got few article/pages with information on how to post request to message queue but none for how to consume message.
UI client calls a REST API exposed on the API gateway.
The backend service actually providing the implementation is a module
This module reads from a MQSeries queue an XML message, processes it and responds back to an outgoing queue.
So API gateway must be able to transform the REST/JSON payload to an XML payload and put it on the MQ Series queue
Wait synchronously and pick up response from another MQSeries queue.
APIM does not support consuming JMS messages OOTB. But WSO2 ESB. See https://docs.wso2.com/display/ESB500/ESB+as+a+JMS+Consumer
However, since APIM has ESB features installed by default, you should be able to deploy such a JMS consuming proxy in APIM too.
Have a try and post if you face any issues.

How to monitor webmethod by using WSO2 BAM?

I have integrated WSO2 ESB and BAM. Greatly, I'm able to monitor the Service Proxy. But I wonder if there is anyway to monitor the operator/WebMethod of proxy. Please give me some advice.
I already use Bam mediator to collect ESB data for monitoring Webmethod. But my problem is there is not payload_request_count/response_count... data to sent to bam_service_data_publisher. Whereby the dashboard is always empty.
So how could I do to send those properties?
You can add the BAM mediator to a sequence (when adding a mediator, choose Agent -> BAM) and specify the BAM server profile and stream you want to use to start capturing and sending data events to the BAM server. Be sure to enable statistics on the sequence to start collecting the data.
https://docs.wso2.com/display/BAM250/Setting+up+BAM+Mediator
https://docs.wso2.com/display/ESB481/BAM+Mediator
In addition you can use Api Manager to control and monitor your web method.
http://wso2.com/api-management/

Do I need any other wso2 product or ESB is just fine?

I'm working on a master's degree project which the main goal is wso2 study.
Through wso2 I need to be able to:
Do protocol Bridging (eg: rest to soap);
Apply data transformation (apply xslt on xml);
Content based routing;
Load balancing;
Create authentication and authorization layer to legacy services (authentication via oauth 1.0a);
Exception shielding;
Service monitoring;
Services lifecycle control;
So, my question is: do I need any other wso2 product, or ESB is just fine? For example to implement the security layer and all the load balance stuff do I need to add wso2 identity server and wso2 elastic load balancer?
Or even more: do I need to extend the esb by writing custom code to solve any of this issues? In which cases extend the esb is the only way to go?
I hope to do not be naive trying to solve all this complicated issues, but I'm kinda lost on this big swiss knife that wso2 is.
Thanks
Please find my answer..
Do protocol Bridging (eg: rest to soap ---> ESB
Apply data transformation (apply xslt on xml) ----> ESB
Content based routing ----> ESB
Load balancing ---> ESB can be used. But i prefer Apache HTTP and Nginx. They are more intended for that purpose
Create authentication and authorization layer to legacy services (authentication via oauth 1.0a) --> ESB can be used. But you need an OAuth2 Authorization server for token validation. Also, XACML PDP for policy validation. Both are available with Identity Server. According to the Carbon, you can install those features with ESB as well. But it is not recommended much. Please see more details from here
Exception shielding ---> ESB
Service monitoring ----> ESB can be used. But if more, you can use BAM
Services lifecycle control ---> ESB can be used. If needed more, you can install G-reg features
I think. It is only enough to use WSO2 ESB and WSO2 IS for this purpose. Sometime you may need to write some code. But it is easy as there are lot of samples are available freely.

Monitoring WSO2 IS logins/loguts, using WSO2 bam

I would like to monitor the logins/logouts (and perhaps other admin services) from a WSO2 Identity Server to WSO2 Buisness Activity Monitor. I found a couple of articles on how to do it, using an WSO2 ESB or/and WSO2 AS. However I would like to do it without the ESB/AS.
Is this possible? And if so how?
Generic way of monitoring a server by BAM is through a custom data agent. Follow [1] for referring how to write a BAM data agent. You can write a data agent to monitor WSO2 Identity Server (IS) which publishes events from IS to BAM.
[1] http://docs.wso2.org/display/BAM230/Data+Publisher
I assume you are referring to the articles explaining how to configure log4j logging to log to the BAM server for storage in Cassandra. They are applicable to the IS server as well since the IS is, just as all WSO2 products, based on the same base product called 'Carbon'.
If you specifically want to log only the login/logout events and not any additional logging you could adjust the appender in such a way that only the following class will log to that appender (as shown here: log4j: Log output of a specific class to a specific appender):
log4j.logger.org.wso2.carbon.core.services.util.CarbonAuthenticationUtil=INFO, LOGEVENT
log4j.additivity.org.wso2.carbon.core.services.util.CarbonAuthenticationUtil=false

Concern with the use of dynamic sequences in ESB 4.5.0

In a scenario where I monitoring my proxy services in ESB 4.5.0 using BAM 2.0.1 with WSO2 products, how I can define that the dynamic endpoints and sequences used in this proxy services have their statistic enable?. So I can see their statistics in BAM.
I can anable sequences statistics in the defined sequences in the synapse configuration but I can not use them for example in chaining scenarios, and I can use dynamic sequences in chaining scenarios but I cannot enable their statistics.
This is due to in the Send Mediator I can only specified dynamic endpoints or sequences that exist in the registry, not in the synapse configuration.
What can I do to make my scenario work?
In the same scenario with a proxy service that implement a service chaining I can see the right response when I consume the service using SOAPUI but in BAM 2.0.1 appear as fail all the time.
You can enable statistics for dynamic endpoints and dynamic sequences by this way:
1. Go to the registry resource,
eg:- /_system/config/Hello
2. Content -> Edit as text
3. Add statistics="enable" to address element
Then if you have used that endpoint, statistics will be fired to BAM and you can see those if the Mediation statistics toolbox is installed.
I have carried out a test on a Chaining service in WSO2 ESB and monitored it through the WSO2 BAM 2.0.1. It seems to work fine and did not encounter any statistics mismatch. The statistics matched with esb invocations.
ESB Statistics:
BAM Mediation Stats: