How to use multi-threading to call number of services? - java

I am working on currency card website which shows dashboard once user logs in.
Dashboard consists of following sections:
(1) Transaction Details of card holder. (Grid with transaction details)
(2) Currencies available in my purse(card).
(3) Currency to currency conversion rates.
(4) Reward points against my card.
Now, all these 4 points have service written for that which my business logic (Java class) file calls.
Now, here I can make use of multithreading to make the performance of my dashboard page good. I want to call all these services asynchronously so that my page will loaded faster.
Can you guys please suggest me topics to search on google to achieve my above functionality.
P.S : I want to achieve above functionality in Java not in any JS framework (as per requirement)

Considering that each of your 4 sections has a different service call, you may utilize ExecutorService#invokeAll to concurrently execute all service calls and then consolidating the result as per your need.

Related

Anylogic - access variables from other agents

I am trying to model a production infrastructure in anylogic which consists of several agents. One of it is a "steam network" (system dynamics) which starts with a flow from nowhere. The dynamic value of this flow is supposed to be the steam output of another agent. Unfortunately, I can't figure out how to link the flow to the steam production (dynamic variable) of my agent "machine".
I appreciate all your help.
To clarify the model navigation, take this example model I made:
It has 2 different agents embedded on main. "OtherAgent" has 1 variable v_DefiningFlowRate of type double, set to 12.
The second agent on Main "SysDynAgent" has a flow object that pulls the flow rate from "OtherAgent" by navigating to it correctly:
this is what you need to adapt to in your model
The flow object allows you to set the flow to be anything (it is a Java field) so you can easily link it to your agent's variable as below:
The actual code depends on your model structure, i.e. how the steam agent is embedded relative to the myAgent feeding it with flow. In my example, "MyAgent" is simply embedded in the steam engine, but yours might vary. If that is the problem, check the Help's section Where am I and how do I get to...

Search optimization when data owner is someone else

In my project, we have 2 REST calls which take too much time, so we are planning to optimize that. Here is how it works currently - we make 1st call to system A and then pass the response to system B for further processing. Once we get the response from system B, we have to manipulate it further before passing it to UI layer and this entire process takes lot of time. We planned on using Solr/Lucene but since we are not the data owners, we can't implement that. Can someone please shed some light on how best this can be handled? We are using Spring MVC and Spring webflow. Thanks in advance!!
[EDIT:] This is not the actual scenario and I am writing this as an example for better understanding. Think of this as making a store locator call for a particular zip to get a list of 100 stores and then sending those 100 stores to another call to get a list of inventory etc. So, this list of stores would change for every zip code and also the inventory there.
If your queries parameters to System A / System B are frequently the same you can add a cache framework to your code. If you use Spring3, you can use the cache easily with an #Cacheable annotation on your code calling SystemA. See :
http://static.springsource.org/spring/docs/3.1.0.M1/spring-framework-reference/html/cache.html
The cache subsystem will cache the result including processing code.

rrd4j with java

I am currently developing a program with Java that collect and illustrate IP traffic from similar information and draw the graph of this information.
So I must use rrd4j rrd with java to save the data flow from a JTable in another table first and then use RRDTool to draw the graph .
but my problem is how to have the info stored in rrd and also how to create database RRD4J
thank you
First of all I would check rrd4j project home page and check some documentation. On the main page there is usage example of how you create the database and I think it's quite clear and no needed to be explained, since it would be copy+paste.
Now what about storing the information.. First of all you need to define how much and what type of data you want to store. For example in the project I'm working, we are aggregating data daily, weekly, monthly and yearly. You also need to specify what is the frequence of data collection: because it really makes difference if it's 5 seconds or 5 minutes.
You should also have a look at former rrd project homepage and ganglia, the part where you defining the RRD files creation, it will really help you to understand how RRDTool and data storing works.

Collating/Managing data to populate "live activity feeds" in web app

I have something of an abstract question regarding managing live feeds/polling on web sites.
I am creating a web app (built on Java/Spring/Hibernate) and on the user's home page I want a live feed of the latest activity from all the members of there team, and I am trying to work out the best way to handle this query on the server side.
The brute force way would be to load the current users list of team mates, and then iterate through each of his team mates, loading their latest conversations/file uploads/etc, and then merging all this activity in to a single list sorted by timestamp and returning that (lets say for sake of example that we just return the top 10 latest activity for the feed).
However, that seems very un-performant, especially as this operation would need to be done regularly (depending on the polling interval).
I have also considered making all the potential activities (conversations/status updates/uploads) as extending an Activity class and then just having a direct SQL/JPQL query in a DAO that selects all the latest activity from a set of users to be returned, but concerned that might bypass the caching and continued access to the DB would also reduce performance.
Has anyone handled this type of problem before? any one know what a good approach is?
Thanks!
This is an old one now, but here is what i did for this:
All tasks that should appear on a live wall extend Activity (this was already the case)
Created a new Notification object, the Notification had a link to the underlying Activity and a link to a user (who was being notified).
Created a pre-persist hook for Activity that created a Notification object for the Activity being persisted - it did this for every user that was interested (all users following the user that was persisting the Activity)
For the moment, Notifications are persisted/retrieved to the DB - possibly not scalable to very high volumes, but the approach I think supports moving to a Queue based system (such as LinkedIn's Kafka queue library which is designed exactly for this purpose). As it is per-user, it also provides the option to have a read/unread notification flag for significant notifications.

Is the Google Calendar API appropriate for my problem?

I'm currently working with a team on a project that will serve as a campus-wide event calendar for my school. We're designing it to be a web application using JSP having a java back end and connected to a relational database located on a server. The database will store events and produce a calendar on the web page based on the events.
Users will also be able to conduct searches and we would like to return a calendar based on the search results (such as activities occurring during a particular a time frame). Potentially we would be creating 100's of calendars at a time to accommodate multiple user requests.
We don't want users to need any special account to use the site (except maybe an account with us). The users will not be editing the events and changing anything but we want a nice GUI interface for them.
Is this a possible task to achieve using the Google Calendar API?
Just to clarify, we will be performing sql queries to construct a list of "events" in a separate section of our application. With this in mind, we do NOT want a calendar that queries our database on its own. We would like a API that allows us to input this list of events, and would output a calendar GUI that provides a user with access to multiple views (daily, weekly, monthly, etc) in an easy-to-use format.
thanks!
It sounds like a decent use of the Google Calendar API to me. After browsing through the API docs for Java, it looks like you can create a calendar, add whatever events to it you wish, and pass a link to that calendar back to the user. In fact, the API page I linked mentions that "you can generate a public calendar for Google Calendar to display, based on your organization's event database". This sounds like exactly like what you are wanting to do. Try out some of the sample code there and see if it looks like it will meet your needs.
I totally agree with bta and have an additional idea:
You said:
The database will store events and
produce a calendar on the web page
based on the events.
You would benefit even more from using Google Calendar in this case. You wouldn't need a database to store the events which has many pros:
You would eliminate a possible bottleneck, because as you said there would be 100s of calendars generated at the same time,
You could have non-tech-savvy people to manage calendars (I believe Google's interface is pretty simple, compared to the backend you would have to develop)
You would eliminate the need for backend (or at least the part responsible for event CRUDs)
You can always "wrap" Google Galendar using its API, so the GUI would be completely up to you,
These are just some of my thoughts, because I believe that simple is better. I hope this will be helpful.
Good luck developing your app!
P.S. If you could, please tell us which method you used and how its working :)

Categories

Resources