Spring Cloud stream & security - security

we are planning to use Spring cloud-stream with a Kafka binder as the eventing base for our application. But we are currently unable to make it work with Spring-security, which we use for HTTP request security. One example I see is with Spring-web-flux and with reactive method security.
Currently we don't use reactive/web flux.
Is this the only way for the same, or is there another way with spring-web and spring-security.
Any help in this regard is highly appreciated as I'm unable to find any info for the same.

Related

Kafka vs SignalR

I am a little bit confused on the roles played by Kafka and SignalR with regards to real time communication. Can somebody help me by providing insights whether Kafka can be used as a like to like replacement for SignalR or are they complementary?
Thanks and Regards,
Nagarajan B P
SignalR is a library that simplifies the process of adding real-time web functionality to applications using WebSockets.
Kafka is an open source software which provides a framework for storing, reading and analysing streaming data.
You can use both if you want, using kafka as the entry point for events, and SignalR to notify web/mobile apps in real time.
Kafka aims to provide streaming data between many different programs. SignalR aims to provide real time communication between a client and server. So if you have a web app, thanks to cross scripting prevention, that page can only talk to its own server. But if you have many of your own custom services that don't all need to go through one point, Kafka would be more appropriate.

Spring integration/cloud-stream/cloud-dataflow

Our application needs to read from Kafka and use Scatter-Gather/Aggregate pattern to do processing and finally writes to datastore. We are using Spring integration for couple of years and are really comfortable with it. However, we want to leverage Kafka Streams and have questions around Spring integration, spring cloud stream and spring cloud data flow
· Does spring-integration-kafka supports kafka streams or do i need to use spring-cloud-stream for using them? https://github.com/spring-projects/spring-integration-kafka . Are there any code examples?
· Is Scatter-Gather/Aggregator pattern supported in spring cloud stream and data flow? Would really appreciate if someone can share examples of how it can be implemented
· Can we mix and match spring-cloud-stream and spring-integration in one flow? If both the above are not possible, I am thinking more like use steam listener and then pass it to integration flow for using other patterns. Is that advisable?
·
Would really appreciate the guidance from experts. Thanks in advance.

Which library of spring should I use to send emails with multy-threading

I have too many emails. I should write scheduler in order to send messages to them. Messages are different. I use spring framework 4.x.
I can write simple class, which connects to SMTP server. But in this case I should write my thread library too in order to send emails parallel.
Do spring have already written library which give me more flexible way to do this tasks? I do not want to use threads. It will be nice if spring already have this functionality.
Do I need Spring integration for this?
Best regards,
Yes, you definitely can do that with Spring Integration, because there is an ExecutorChannel implementation with can be supplied with an TaskExecutor from the Spring Core:
<channel id="sendEmailChannel">
<dispatcher task-executor="threadPoolTaskExecutor"/>
</channel>
<int-mail:outbound-channel-adapter channel="sendEmailChannel" mail-sender="mailSender"/>
But anyway you should keep in mind that all Spring Integration components are based on the Java and that ExecutorService is used on the background.
From other side if you need only the mail sending stuff from the Spring Integration, it would be an overhead and can simply use Core Spring Framework legacy like JavaMailSender as a bean and #Async for the sendMail method to achieve your parallel requirement.
UPDATE
could you tell me whether I need JMS for this situation?
I don't see any JMS-related stuff here. You don't have (or at least don't show) any real integration points in your solution. The same I can say even about Spring Integration just for email sending. However with the Spring Boot your SI config will be enough short. From other side if you'll study Spring Integration better eventually you'll get more gain to rely on the Integration components for your systems, as internally, as well as externally with other systems through JMS, AMQP, Kafka etc.
To be honest: a lot of years ago my first acquaintance with Spring Integration was due the requirement to get files from the FTP and have ability to pick up new files automatically. I found the solution only in the Spring Integration 1.0.0.M1. After that short XML config for the <int-ftp:inbound-channel-adapter> I loved Spring Integration and since that time it became as a part of my life. :-)
So, it's up to you to go ahead with Spring Integration in your simple app, or just follow with more formal solution with JavaMailSender direct usage.
You should use java executors framework. For example you can write something like the code below:
ExecutorService executor = Executors.newWorkStealingPool();
executor.execute(() -> mailSender.send(mail));

Fetching data from cerner's EMR / EHR

I don't have much idea in medical domain.
We evaluating a requirement from our client who is using Cerner EMR system
As per the requirement we need to expose the Cerner EMR or fetch some EMR / EHR data and to display it in SharePoint 2013 portal.
To meet this requirement what kind of integration options Cerner proposes. Is there any API’s or Web services exposed which can be used to build custom solutions for the same?
As far as I know Cerner did expose EMR / EHR information in HL7 format, but i don't have any idea how to access that.
I had also requested Cerner for the same awaiting replies from their end.
If anybody who have associated with similar kind of job can through some light and provide me with some insights.
You will need to request an interface between your organization and the facility with the EMR. An interface in the Health Care IT world is not the same as a GUI. Is is the mechanism (program/tool) that transfers HL7 data between one entity and the other. There will probably be a cost to have an interface setup. However, that is the traditional way Cerner communicates with 3rd parties. HIPAA laws will require that this connection be very secure.
You might also see if the facility with the EMR has an existing interface that produces the info you are after. You may be able to share that data or have a flat file generated from that interface that you could get access to. Because of HIPAA regulations, your client may be reluctant to share information in that manner.
I would suggest you start with your client's interface/integration team. They would be the ones that manage the information into and out of Cerner. They could also shed some light on how they prefer to see things done.
Good Luck
There are two ways of achieving this as I know. One is a direct connectivity to Cerner's Oracle database. This seems less likely to be possible as Cerner doesn't allow other vendors to have a direct access to their database.
The other way is to use Cerner's mPage Web Services. We have achieved this using mPage Web Services. The client needs to host the web services on a IBM WAS or some other container. We used WAS as that was readily available to us. Once the hosting is done, you will get a URL and using that you can execute any CCL program which will return you the data in JSON/XML format. mPage webservice has a basic HTTP authentication.
Now, CCL has to be written in a way which can return you the data you require.
We have a successful setup and have been working on this since 2014. For more details you can also try uCERN portal.
Thanks,
Navin

How must a Node JS server be configured to function as an endpoint for a Breeze JS application

At this point, I'm convinced that declarative bindings backed by a robust data query service is the secret sauce for writing scalable rich client applications for the web.
Obviously there are many options for declarative data binding (Knockout JS and Rivets for Backbone to name just a few). However, when it comes to querying the server, caching data and tracking changes on the client, the only modular solution that looks half way mature seems to be Breeze JS. And yet, while it claims not to dictate server technology, all documentation examples show Breeze running with .NET.
What requirements, API-related or otherwise, must a server fulfill in order to serve as an endpoint for a Breeze application? Is implementing the OData protocol enough? Are there any examples out there to light the way? Or other libraries solving this problem that I've missed?
you can use nodejs as an oData server with JayData
http://jaydata.org/blog/install-your-own-odata-server-with-nodejs-and-mongodb
it's free and open source
Yes, OData is sufficient. However, we are still working on OData save support (querying is fine, of course).
Sorry for the delay in getting out non-.NET samples. We are definitely committed to an open, pluggable back-end and will be releasing more samples in the next few weeks.
Also, please vote for these features (or submit your own) on our UserVoice feedback page. This helps us prioritize what to work on next. Thanks!

Resources