I want to redeploy an app on mule standalone (hot deployment).
I need to be sure that if some flows are processing data, when I start the deployment of the new version of the app, it waits for all old messages are processed before deploying it.
Moreover, the app includes jmsQ (publisher/subscribers pattern), if there still are messages on jmsQ, will there process with new version of the app or the old version of the app.
I was unable to find response for this purpose, if one of you have better documentation or a part of the answers.
Based on experience, if you are going to redeploy an app, the mule app is stopped first, the message on the "flow" that it is currently processing will be "lost". When the "new" flow will then connect to ActiveMQ and process the remaining message from queue. Hope this answers your question.
Related
I Want to create a application which display list of installed application with help of android service.
Which android service to use in this scenario?
It depends on what you want, you can use WorkManager , it runs synchronously in the background, and it is very flexible, espcially if you want to schedule your work. You can also use Foreground Service if you want to show a notification while your app is running. You can use Bound Service if you want to exchange data between an activty and the service.
Before android Oreo, you could useIntent Service, but starting from Oreo, it started to cause an exception. You can also still use AsyncTask but it has serveral drawbacks and AsyncTask may be deprecated in the future.
This is an overview, you haven't mentioned specific details about your app, hope this overview will help choose which way you go.
I created a mule application and able to run/deploy it on my machine successfully. On running api-console is appearing in Anypoint-studio like this.
Now when I deployed this application on mule ESB server and try to hit api-console for this application using the following URL "https://mulesoft:ESB****/api/console"
Mule is saying RAML loading for prolonged time like the one shown in below image.
I am not able to resolve the issue after working hours on it, If anyone can suggest possible reasons for the occurrence of this issue. It would be a great help to resolve the same.
As per the link, Mule Anypoint Studio application launcher now supports launching multiple applications and it works. I could not find how to stop individual application if multiple are deployed?
http://blogs.mulesoft.org/release-studio-2015-01/
You can't. Studio's console refers to the JVM instance running the attached Mule distribution, not to each individual deployed app on that instance. However, if you modify any app config file, that app will be redeployed.
On the other hand, reviewing the log you can see that each app is deployed independently from <workspace>/.mule/apps/<app-name>.zip. After its deployment, a file named <workspace>/.mule/apps/<app-name>-anchor.txt will be created, if you remove that file the app will be undeployed.
HTH, Marcos.
I did stop an individual app while others are still running. Please see the image below for your reference.
you can see the app mule-smtp has been stopped while others are in still running state.
Hope this helped.
you can enable the mule run time in preferences tab of anypoint studio.
That is easiest way to stop specific applications on anypoint studio
I have a couple of Mule applications running on mule container version 3.3.0. Recently I have observed that one of my mule application is getting redeployed again and again in a loop continuously.
The Mule app first get deployed then immediately within 2-3 seconds the mule app gets un-deployed and then gets deployed automatically. This is happening in loop and I don't see any specific errors in the log.
Can somebody please help me out with this problem and let me know the reason for the above behavior and how to fix it.
Thanks
Jai
There has to be an error, the problem is probably that you don't see it. Try locating the logfile named mule.log (or mule_ee.log) rather than mule-app-APPNAME.log. You might find the error there.
Otherwise, triple check that there are no weird permissions on the directory app (as the lock file should be created there).
Worklight 6.2.0
Native Worklight App on Samsung Galaxy S4, Android 4.4.2
WLAnalytics.enable();
WLAnalytics.log("some text", new org.json.JSONOBject() );
WLAnalytics.send();
// and also go on to successfully call an adapter
Analytics Dasboard shows the app version and adapter activity. Log Search does not show any application log messages and the dropdown for selecting applications shows "All Applications" only, no sign of my app.
Have I missed some initialisation step? Any other ideas?
** edited to add **
It has been suggested that we should use the method:
WLAnalytics.log("some text");
In our 6.2.0.00 CLI environment there is no such Java method.
The answer is that there a further initialisation requirement that seems to be necessary when working with a pure Native application, these are typically build using the Worklight CLI tooling.
This is the initialisation, note the call to Logger.setContext()
WLAnalytics.enable();
Logger.setContext(this);
Then this works
WLAnalytics.log("My test message2", new org.json.JSONObject());
It's worth noting that the call to WLAnalytics.send() is not necessary in normal running as typically the analytic data is buffered and sent as a piggy-back on adapter calls. However while testing a call to send() does help.
Further, if running in an environment where the Analytics WAR is on a separate machine from the Worklight Server WAR there are additional latencies. Hence testing all of this needs care.
For now, I suggest that you just use the WLAnalytics.log(String) method. There are some clear inconsistencies that need to be dealt with whether it be through documentation or code fixes.
The WL.Logger APIs were originally created to send log data to a custom adapter, which is why they take a dictionary/object for extra metadata. The data sent to the custom adapter could be read as a valid JSON object to run operations on the adapter.
The WL.Analytics APIs mimicked the WL.Logger APIs for the same purpose: parsing the JSON on a worklight adapter. The Operational analytics server came as a convenience to intercept and display some of these logs, but not all of them are being captured as you have learned.
Your questions are all valid though, as none of this is described in the documentation. In future releases, we may make use of the extra JSON object passed into the API in the Operational analytics console, but for right now they only serve their original purpose of sending the analytics to a custom adapter.