This commit updates URLs to prefer the https protocol. Redirects are not followed to avoid accidentally expanding intentionally shortened URLs (i.e. if using a URL shortener). # Fixed URLs ## Fixed But Review Recommended These URLs were fixed, but the https status was not OK. However, the https status was the same as the http request or http redirected to an https URL, so they were migrated. Your review is recommended. * [ ] http://developer.marklogic.com/express (301) with 1 occurrences migrated to: /free-developer ([https](https://developer.marklogic.com/express) result IllegalArgumentException). * [ ] http://opensmpp.logica.com/CommonPart/Download/download2.html (301) with 1 occurrences migrated to: https://public.cgi.com/CommonPart/Download/download2.html ([https](https://opensmpp.logica.com/CommonPart/Download/download2.html) result SSLHandshakeException). * [ ] http://0.0.0.0:2379 (AnnotatedConnectException) with 2 occurrences migrated to: https://0.0.0.0:2379 ([https](https://0.0.0.0:2379) result AnnotatedConnectException). * [ ] http://en.wikipedia.org/wiki/Zip_%28file_format%29 (301) with 1 occurrences migrated to: https://en.wikipedia.org/wiki/Zip_%2528file_format%2529 ([https](https://en.wikipedia.org/wiki/Zip_%28file_format%29) result 400). * [ ] http://build.spring.io/plugins/servlet/buildStatusImage/INTEXT-ZIP (301) with 1 occurrences migrated to: https://build.spring.io/plugins/servlet/buildStatusImage/INTEXT-ZIP ([https](https://build.spring.io/plugins/servlet/buildStatusImage/INTEXT-ZIP) result 404). * [ ] http://docs.hazelcast.org/docs/latest/manual/html/continuousquery.html (301) with 1 occurrences migrated to: https://docs.hazelcast.org/docs/latest/manual/html/continuousquery.html ([https](https://docs.hazelcast.org/docs/latest/manual/html/continuousquery.html) result 404). * [ ] http://docs.hazelcast.org/docs/latest/manual/html/distributed-data-structures.html (301) with 1 occurrences migrated to: https://docs.hazelcast.org/docs/latest/manual/html/distributed-data-structures.html ([https](https://docs.hazelcast.org/docs/latest/manual/html/distributed-data-structures.html) result 404). * [ ] http://docs.hazelcast.org/docs/latest/manual/html/distributedevents.html (301) with 1 occurrences migrated to: https://docs.hazelcast.org/docs/latest/manual/html/distributedevents.html ([https](https://docs.hazelcast.org/docs/latest/manual/html/distributedevents.html) result 404). * [ ] http://docs.hazelcast.org/docs/latest/manual/html/distributedquery.html (301) with 1 occurrences migrated to: https://docs.hazelcast.org/docs/latest/manual/html/distributedquery.html ([https](https://docs.hazelcast.org/docs/latest/manual/html/distributedquery.html) result 404). * [ ] http://docs.spring.io/spring-integration/reference/html/system-management-chapter.html (301) with 3 occurrences migrated to: https://docs.spring.io/spring-integration/reference/html/system-management-chapter.html ([https](https://docs.spring.io/spring-integration/reference/html/system-management-chapter.html) result 404). * [ ] http://docs.spring.io/spring-integration/reference/html/xmpp.html (301) with 1 occurrences migrated to: https://docs.spring.io/spring-integration/reference/html/xmpp.html ([https](https://docs.spring.io/spring-integration/reference/html/xmpp.html) result 404). * [ ] http://help.github.com/send-pull-requests (404) with 1 occurrences migrated to: https://help.github.com/send-pull-requests ([https](https://help.github.com/send-pull-requests) result 404). * [ ] http://www.springframework.org/schema/integration/hazelcast/spring-integration-hazelcast.xsd (404) with 1 occurrences migrated to: https://www.springframework.org/schema/integration/hazelcast/spring-integration-hazelcast.xsd ([https](https://www.springframework.org/schema/integration/hazelcast/spring-integration-hazelcast.xsd) result 404). * [ ] http://www.springframework.org/schema/integration/jgroups/spring-intergration-jgroups.xsd (404) with 3 occurrences migrated to: https://www.springframework.org/schema/integration/jgroups/spring-intergration-jgroups.xsd ([https](https://www.springframework.org/schema/integration/jgroups/spring-intergration-jgroups.xsd) result 404). * [ ] http://www.springframework.org/schema/integration/print/spring-integration-print.xsd (404) with 1 occurrences migrated to: https://www.springframework.org/schema/integration/print/spring-integration-print.xsd ([https](https://www.springframework.org/schema/integration/print/spring-integration-print.xsd) result 404). * [ ] http://www.springframework.org/schema/integration/twitter/spring-integration-social-twitter.xsd (404) with 1 occurrences migrated to: https://www.springframework.org/schema/integration/twitter/spring-integration-social-twitter.xsd ([https](https://www.springframework.org/schema/integration/twitter/spring-integration-social-twitter.xsd) result 404). * [ ] http://www.springframework.org/schema/integration/voldemort/spring-integration-voldemort.xsd (404) with 2 occurrences migrated to: https://www.springframework.org/schema/integration/voldemort/spring-integration-voldemort.xsd ([https](https://www.springframework.org/schema/integration/voldemort/spring-integration-voldemort.xsd) result 404). * [ ] http://search.twitter.com/operators (410) with 1 occurrences migrated to: https://search.twitter.com/operators ([https](https://search.twitter.com/operators) result 410). ## Fixed Success These URLs were switched to an https URL with a 2xx status. While the status was successful, your review is still recommended. * [ ] http://aws.amazon.com/ with 1 occurrences migrated to: https://aws.amazon.com/ ([https](https://aws.amazon.com/) result 200). * [ ] http://aws.amazon.com/s3/ with 1 occurrences migrated to: https://aws.amazon.com/s3/ ([https](https://aws.amazon.com/s3/) result 200). * [ ] http://docs.oracle.com/javase/6/docs/api/javax/print/DocFlavor.html with 3 occurrences migrated to: https://docs.oracle.com/javase/6/docs/api/javax/print/DocFlavor.html ([https](https://docs.oracle.com/javase/6/docs/api/javax/print/DocFlavor.html) result 200). * [ ] http://docs.oracle.com/javase/6/docs/api/javax/print/PrintService.html with 1 occurrences migrated to: https://docs.oracle.com/javase/6/docs/api/javax/print/PrintService.html ([https](https://docs.oracle.com/javase/6/docs/api/javax/print/PrintService.html) result 200). * [ ] http://docs.oracle.com/javase/6/docs/api/javax/print/attribute/Attribute.html with 1 occurrences migrated to: https://docs.oracle.com/javase/6/docs/api/javax/print/attribute/Attribute.html ([https](https://docs.oracle.com/javase/6/docs/api/javax/print/attribute/Attribute.html) result 200). * [ ] http://docs.oracle.com/javase/6/docs/api/javax/print/attribute/standard/Chromaticity.html with 1 occurrences migrated to: https://docs.oracle.com/javase/6/docs/api/javax/print/attribute/standard/Chromaticity.html ([https](https://docs.oracle.com/javase/6/docs/api/javax/print/attribute/standard/Chromaticity.html) result 200). * [ ] http://docs.oracle.com/javase/6/docs/api/javax/print/attribute/standard/Copies.html with 1 occurrences migrated to: https://docs.oracle.com/javase/6/docs/api/javax/print/attribute/standard/Copies.html ([https](https://docs.oracle.com/javase/6/docs/api/javax/print/attribute/standard/Copies.html) result 200). * [ ] http://docs.oracle.com/javase/6/docs/api/javax/print/attribute/standard/MediaSizeName.html with 1 occurrences migrated to: https://docs.oracle.com/javase/6/docs/api/javax/print/attribute/standard/MediaSizeName.html ([https](https://docs.oracle.com/javase/6/docs/api/javax/print/attribute/standard/MediaSizeName.html) result 200). * [ ] http://docs.oracle.com/javase/6/docs/api/javax/print/attribute/standard/MediaTray.html with 1 occurrences migrated to: https://docs.oracle.com/javase/6/docs/api/javax/print/attribute/standard/MediaTray.html ([https](https://docs.oracle.com/javase/6/docs/api/javax/print/attribute/standard/MediaTray.html) result 200). * [ ] http://docs.oracle.com/javase/6/docs/api/javax/print/attribute/standard/Sides.html with 1 occurrences migrated to: https://docs.oracle.com/javase/6/docs/api/javax/print/attribute/standard/Sides.html ([https](https://docs.oracle.com/javase/6/docs/api/javax/print/attribute/standard/Sides.html) result 200). * [ ] http://docs.oracle.com/javase/6/docs/technotes/guides/jps/index.html with 2 occurrences migrated to: https://docs.oracle.com/javase/6/docs/technotes/guides/jps/index.html ([https](https://docs.oracle.com/javase/6/docs/technotes/guides/jps/index.html) result 200). * [ ] http://docs.splunk.com/Documentation/Splunk/latest/Data/Monitornetworkports with 1 occurrences migrated to: https://docs.splunk.com/Documentation/Splunk/latest/Data/Monitornetworkports ([https](https://docs.splunk.com/Documentation/Splunk/latest/Data/Monitornetworkports) result 200). * [ ] http://docs.spring.io/spring-integration/reference/ with 4 occurrences migrated to: https://docs.spring.io/spring-integration/reference/ ([https](https://docs.spring.io/spring-integration/reference/) result 200). * [ ] http://docs.spring.io/spring-integration/reference/html/ with 1 occurrences migrated to: https://docs.spring.io/spring-integration/reference/html/ ([https](https://docs.spring.io/spring-integration/reference/html/) result 200). * [ ] http://en.wikipedia.org/wiki/Server_Message_Block with 4 occurrences migrated to: https://en.wikipedia.org/wiki/Server_Message_Block ([https](https://en.wikipedia.org/wiki/Server_Message_Block) result 200). * [ ] http://en.wikipedia.org/wiki/Short_Message_Peer-to-Peer with 2 occurrences migrated to: https://en.wikipedia.org/wiki/Short_Message_Peer-to-Peer ([https](https://en.wikipedia.org/wiki/Short_Message_Peer-to-Peer) result 200). * [ ] http://en.wikipedia.org/wiki/Short_Message_Service with 1 occurrences migrated to: https://en.wikipedia.org/wiki/Short_Message_Service ([https](https://en.wikipedia.org/wiki/Short_Message_Service) result 200). * [ ] http://en.wikipedia.org/wiki/Short_message_service_center with 1 occurrences migrated to: https://en.wikipedia.org/wiki/Short_message_service_center ([https](https://en.wikipedia.org/wiki/Short_message_service_center) result 200). * [ ] http://en.wikipedia.org/wiki/XML_database with 1 occurrences migrated to: https://en.wikipedia.org/wiki/XML_database ([https](https://en.wikipedia.org/wiki/XML_database) result 200). * [ ] http://en.wikipedia.org/wiki/XPath_2.0 with 1 occurrences migrated to: https://en.wikipedia.org/wiki/XPath_2.0 ([https](https://en.wikipedia.org/wiki/XPath_2.0) result 200). * [ ] http://en.wikipedia.org/wiki/XQuery with 3 occurrences migrated to: https://en.wikipedia.org/wiki/XQuery ([https](https://en.wikipedia.org/wiki/XQuery) result 200). * [ ] http://en.wikipedia.org/wiki/XQuery_API_for_Java with 1 occurrences migrated to: https://en.wikipedia.org/wiki/XQuery_API_for_Java ([https](https://en.wikipedia.org/wiki/XQuery_API_for_Java) result 200). * [ ] http://gradle.org with 1 occurrences migrated to: https://gradle.org ([https](https://gradle.org) result 200). * [ ] http://hazelcast.org/ with 1 occurrences migrated to: https://hazelcast.org/ ([https](https://hazelcast.org/) result 200). * [ ] http://hillert.blogspot.com/2011/12/java-print-service-frustrations.html with 1 occurrences migrated to: https://hillert.blogspot.com/2011/12/java-print-service-frustrations.html ([https](https://hillert.blogspot.com/2011/12/java-print-service-frustrations.html) result 200). * [ ] http://jcp.org/aboutJava/communityprocess/final/jsr225/index.html with 1 occurrences migrated to: https://jcp.org/aboutJava/communityprocess/final/jsr225/index.html ([https](https://jcp.org/aboutJava/communityprocess/final/jsr225/index.html) result 200). * [ ] http://kafka.apache.org/ with 1 occurrences migrated to: https://kafka.apache.org/ ([https](https://kafka.apache.org/) result 200). * [ ] http://maven.apache.org/ with 2 occurrences migrated to: https://maven.apache.org/ ([https](https://maven.apache.org/) result 200). * [ ] http://mqtt.org/ with 2 occurrences migrated to: https://mqtt.org/ ([https](https://mqtt.org/) result 200). * [ ] http://oauth.net with 2 occurrences migrated to: https://oauth.net ([https](https://oauth.net) result 200). * [ ] http://projects.spring.io/spring-social-twitter/ with 2 occurrences migrated to: https://projects.spring.io/spring-social-twitter/ ([https](https://projects.spring.io/spring-social-twitter/) result 200). * [ ] http://spring.io with 4 occurrences migrated to: https://spring.io ([https](https://spring.io) result 200). * [ ] http://spring.io/ with 4 occurrences migrated to: https://spring.io/ ([https](https://spring.io/) result 200). * [ ] http://stackoverflow.com/faq with 2 occurrences migrated to: https://stackoverflow.com/faq ([https](https://stackoverflow.com/faq) result 200). * [ ] http://stackoverflow.com/questions/3725662/what-is-the-earliest-timestamp-value-that-is-supported-in-zip-file-format with 2 occurrences migrated to: https://stackoverflow.com/questions/3725662/what-is-the-earliest-timestamp-value-that-is-supported-in-zip-file-format ([https](https://stackoverflow.com/questions/3725662/what-is-the-earliest-timestamp-value-that-is-supported-in-zip-file-format) result 200). * [ ] http://stackoverflow.com/questions/tagged/spring-integration with 2 occurrences migrated to: https://stackoverflow.com/questions/tagged/spring-integration ([https](https://stackoverflow.com/questions/tagged/spring-integration) result 200). * [ ] http://vimeo.com/34436402 with 1 occurrences migrated to: https://vimeo.com/34436402 ([https](https://vimeo.com/34436402) result 200). * [ ] http://wiki.apache.org/cassandra/HintedHandoff with 1 occurrences migrated to: https://wiki.apache.org/cassandra/HintedHandoff ([https](https://wiki.apache.org/cassandra/HintedHandoff) result 200). * [ ] http://wiki.apache.org/cassandra/Operations with 3 occurrences migrated to: https://wiki.apache.org/cassandra/Operations ([https](https://wiki.apache.org/cassandra/Operations) result 200). * [ ] http://wiki.apache.org/cassandra/StorageConfiguration with 1 occurrences migrated to: https://wiki.apache.org/cassandra/StorageConfiguration ([https](https://wiki.apache.org/cassandra/StorageConfiguration) result 200). * [ ] http://www.apache.org with 11 occurrences migrated to: https://www.apache.org ([https](https://www.apache.org) result 200). * [ ] http://www.html5rocks.com/en/tutorials/websockets/basics/ with 1 occurrences migrated to: https://www.html5rocks.com/en/tutorials/websockets/basics/ ([https](https://www.html5rocks.com/en/tutorials/websockets/basics/) result 200). * [ ] http://www.nowsms.com/long-sms-text-messages-and-the-160-character-limit with 1 occurrences migrated to: https://www.nowsms.com/long-sms-text-messages-and-the-160-character-limit ([https](https://www.nowsms.com/long-sms-text-messages-and-the-160-character-limit) result 200). * [ ] http://www.nowsms.com/smpp-information with 1 occurrences migrated to: https://www.nowsms.com/smpp-information ([https](https://www.nowsms.com/smpp-information) result 200). * [ ] http://www.project-voldemort.com/ with 1 occurrences migrated to: https://www.project-voldemort.com/ ([https](https://www.project-voldemort.com/) result 200). * [ ] http://www.project-voldemort.com/voldemort/ with 1 occurrences migrated to: https://www.project-voldemort.com/voldemort/ ([https](https://www.project-voldemort.com/voldemort/) result 200). * [ ] http://www.sedna.org/ with 2 occurrences migrated to: https://www.sedna.org/ ([https](https://www.sedna.org/) result 200). * [ ] http://www.splunk.com/ with 2 occurrences migrated to: https://www.splunk.com/ ([https](https://www.splunk.com/) result 200). * [ ] http://www.springframework.org/schema/beans/spring-beans.xsd with 6 occurrences migrated to: https://www.springframework.org/schema/beans/spring-beans.xsd ([https](https://www.springframework.org/schema/beans/spring-beans.xsd) result 200). * [ ] http://www.springframework.org/schema/integration/spring-integration-2.2.xsd with 6 occurrences migrated to: https://www.springframework.org/schema/integration/spring-integration-2.2.xsd ([https](https://www.springframework.org/schema/integration/spring-integration-2.2.xsd) result 200). * [ ] http://www.springframework.org/schema/integration/spring-integration-4.2.xsd with 1 occurrences migrated to: https://www.springframework.org/schema/integration/spring-integration-4.2.xsd ([https](https://www.springframework.org/schema/integration/spring-integration-4.2.xsd) result 200). * [ ] http://www.springframework.org/schema/integration/spring-integration-5.1.xsd with 1 occurrences migrated to: https://www.springframework.org/schema/integration/spring-integration-5.1.xsd ([https](https://www.springframework.org/schema/integration/spring-integration-5.1.xsd) result 200). * [ ] http://www.springframework.org/schema/integration/spring-integration.xsd with 9 occurrences migrated to: https://www.springframework.org/schema/integration/spring-integration.xsd ([https](https://www.springframework.org/schema/integration/spring-integration.xsd) result 200). * [ ] http://www.techdive.in/java/send-sms-using-jsmpp with 1 occurrences migrated to: https://www.techdive.in/java/send-sms-using-jsmpp ([https](https://www.techdive.in/java/send-sms-using-jsmpp) result 200). * [ ] http://contributor-covenant.org with 1 occurrences migrated to: https://contributor-covenant.org ([https](https://contributor-covenant.org) result 301). * [ ] http://contributor-covenant.org/version/1/3/0/ with 1 occurrences migrated to: https://contributor-covenant.org/version/1/3/0/ ([https](https://contributor-covenant.org/version/1/3/0/) result 301). * [ ] http://static.springsource.org/spring-integration/reference (301) with 5 occurrences migrated to: https://docs.spring.io/spring-integration/reference ([https](https://static.springsource.org/spring-integration/reference) result 301). * [ ] http://docs.spring.io/spring-integration/reference/html with 1 occurrences migrated to: https://docs.spring.io/spring-integration/reference/html ([https](https://docs.spring.io/spring-integration/reference/html) result 301). * [ ] http://docs.spring.io/spring/docs/current/spring-framework-reference/html/expressions.html with 1 occurrences migrated to: https://docs.spring.io/spring/docs/current/spring-framework-reference/html/expressions.html ([https](https://docs.spring.io/spring/docs/current/spring-framework-reference/html/expressions.html) result 301). * [ ] http://forum.springsource.org/forumdisplay.php?42-Integration (301) with 1 occurrences migrated to: https://forum.spring.io/forumdisplay.php?42-Integration ([https](https://forum.springsource.org/forumdisplay.php?42-Integration) result 301). * [ ] http://help.github.com/set-up-git-redirect with 1 occurrences migrated to: https://help.github.com/set-up-git-redirect ([https](https://help.github.com/set-up-git-redirect) result 301). * [ ] http://jira.springsource.org/browse/INTEXT with 1 occurrences migrated to: https://jira.springsource.org/browse/INTEXT ([https](https://jira.springsource.org/browse/INTEXT) result 301). * [ ] http://projects.spring.io/spring-social with 1 occurrences migrated to: https://projects.spring.io/spring-social ([https](https://projects.spring.io/spring-social) result 301). * [ ] http://support.twitter.com/articles/119138-types-of-tweets-and-where-they-appear with 1 occurrences migrated to: https://support.twitter.com/articles/119138-types-of-tweets-and-where-they-appear ([https](https://support.twitter.com/articles/119138-types-of-tweets-and-where-they-appear) result 301). * [ ] http://www.linkedin.com/answers/technology/information-technology/telecommunications/TCH_ITS_TCI/461130-44316394 with 1 occurrences migrated to: https://www.linkedin.com/answers/technology/information-technology/telecommunications/TCH_ITS_TCI/461130-44316394 ([https](https://www.linkedin.com/answers/technology/information-technology/telecommunications/TCH_ITS_TCI/461130-44316394) result 301). * [ ] http://www.splunk.com/download with 1 occurrences migrated to: https://www.splunk.com/download ([https](https://www.splunk.com/download) result 301). * [ ] http://www.spring.io with 5 occurrences migrated to: https://www.spring.io ([https](https://www.spring.io) result 301). * [ ] http://www.springframework.org with 6 occurrences migrated to: https://www.springframework.org ([https](https://www.springframework.org) result 301). * [ ] http://www.springsource.com with 10 occurrences migrated to: https://www.springsource.com ([https](https://www.springsource.com) result 301). * [ ] http://www.springsource.org/spring-integration with 18 occurrences migrated to: https://www.springsource.org/spring-integration ([https](https://www.springsource.org/spring-integration) result 301). * [ ] http://www.springintegration.org/ (301) with 2 occurrences migrated to: https://www.springsource.org/spring-integration/ ([https](https://www.springintegration.org/) result 301). * [ ] http://www.springsource.org/sts with 1 occurrences migrated to: https://www.springsource.org/sts ([https](https://www.springsource.org/sts) result 301). * [ ] http://dev.twitter.com with 2 occurrences migrated to: https://dev.twitter.com ([https](https://dev.twitter.com) result 302). * [ ] http://dev.twitter.com/pages/oauth_faq with 1 occurrences migrated to: https://dev.twitter.com/pages/oauth_faq ([https](https://dev.twitter.com/pages/oauth_faq) result 302). * [ ] http://download.oracle.com/javase/6/docs/technotes/guides/security/jsse/JSSERefGuide.html with 1 occurrences migrated to: https://download.oracle.com/javase/6/docs/technotes/guides/security/jsse/JSSERefGuide.html ([https](https://download.oracle.com/javase/6/docs/technotes/guides/security/jsse/JSSERefGuide.html) result 302). * [ ] http://hueniverse.com/oauth with 2 occurrences migrated to: https://hueniverse.com/oauth ([https](https://hueniverse.com/oauth) result 302). * [ ] http://spring.io/spring-integration with 1 occurrences migrated to: https://spring.io/spring-integration ([https](https://spring.io/spring-integration) result 302). * [ ] http://springsource.com/support/springsupport with 1 occurrences migrated to: https://springsource.com/support/springsupport ([https](https://springsource.com/support/springsupport) result 302). * [ ] http://www.exist-db.org/ with 1 occurrences migrated to: https://www.exist-db.org/ ([https](https://www.exist-db.org/) result 302). # Ignored These URLs were intentionally ignored. * http://www.springframework.org/schema/beans with 30 occurrences * http://www.springframework.org/schema/integration with 34 occurrences * http://www.springframework.org/schema/integration/cassandra with 2 occurrences * http://www.springframework.org/schema/integration/hazelcast with 4 occurrences * http://www.springframework.org/schema/integration/jgroups with 8 occurrences * http://www.springframework.org/schema/integration/jt400 with 2 occurrences * http://www.springframework.org/schema/integration/print with 4 occurrences * http://www.springframework.org/schema/integration/smb with 3 occurrences * http://www.springframework.org/schema/integration/smpp with 2 occurrences * http://www.springframework.org/schema/integration/twitter with 4 occurrences * http://www.springframework.org/schema/integration/voldemort with 6 occurrences * http://www.springframework.org/schema/integration/xmpp with 2 occurrences * http://www.springframework.org/schema/integration/xquery with 2 occurrences * http://www.springframework.org/schema/integration/zip with 2 occurrences * http://www.springframework.org/schema/tool with 24 occurrences * http://www.w3.org/2001/XMLSchema with 12 occurrences * http://www.w3.org/2001/XMLSchema-instance with 4 occurrences
SPRING INTEGRATION HAZELCAST SUPPORT
HAZELCAST EVENT-DRIVEN INBOUND CHANNEL ADAPTER
Hazelcast provides distributed data structures such as
- com.hazelcast.core.IMap,
- com.hazelcast.core.MultiMap,
- com.hazelcast.core.IList,
- com.hazelcast.core.ISet,
- com.hazelcast.core.IQueue,
- com.hazelcast.core.ITopic,
- com.hazelcast.core.ReplicatedMap.
It also provides event listeners in order to listen to the modifications performed on these data structures.
- com.hazelcast.core.EntryListener<K, V>
- com.hazelcast.core.ItemListener
- com.hazelcast.core.MessageListener
Hazelcast Event-Driven Inbound Channel Adapter listens related cache events and sends event messages to defined channel. It supports both XML and JavaConfig driven configurations.
XML Driven Configuration :
<int-hazelcast:inbound-channel-adapter channel="mapChannel"
cache="map"
cache-events="UPDATED, REMOVED"
cache-listening-policy="SINGLE" />
Basically, Hazelcast Event-Driven Inbound Channel Adapter requires following attributes :
- channel : Specifies channel which message is sent.
- cache : Specifies the distributed Object reference which is listened. It is mandatory attribute.
- cache-events : Specifies cache events which are listened. It is optional attribute and its default value is ADDED. Its supported values are as follows :
- Supported cache event types for IMap and MultiMap : ADDED, REMOVED, UPDATED, EVICTED, EVICT_ALL and CLEAR_ALL.
- Supported cache event types for ReplicatedMap : ADDED, REMOVED, UPDATED, EVICTED.
- Supported cache event types for IList, ISet and IQueue : ADDED, REMOVED.
- There is no need to cache event type definition for ITopic.
- cache-listening-policy : Specifies cache listening policy as SINGLE or ALL. It is optional attribute and its default value is SINGLE. Each Hazelcast inbound channel adapter listening same cache object with same cache-events attribute, can receive a single event message or all event messages. If it is ALL, all Hazelcast inbound channel adapters listening same cache object with same cache-events attribute, will receive same event messages. If it is SINGLE, they will receive unique event messages.
Sample namespace and schemaLocation definitions are as follows :
xmlns:int-hazelcast= “http://www.springframework.org/schema/integration/hazelcast”
xsi:schemaLocation="http://www.springframework.org/schema/integration/hazelcast
https://www.springframework.org/schema/integration/hazelcast/spring-integration-hazelcast.xsd”
Sample definitions are as follows :
Distributed Map :
<int:channel id="mapChannel"/>
<int-hazelcast:inbound-channel-adapter channel="mapChannel"
cache="map"
cache-events="UPDATED, REMOVED" />
<bean id="map" factory-bean="instance" factory-method="getMap">
<constructor-arg value="map"/>
</bean>
<bean id="instance" class="com.hazelcast.core.Hazelcast"
factory-method="newHazelcastInstance">
<constructor-arg>
<bean class="com.hazelcast.config.Config" />
</constructor-arg>
</bean>
Distributed MultiMap :
<int:channel id="multiMapChannel"/>
<int-hazelcast:inbound-channel-adapter channel="multiMapChannel"
cache="multiMap"
cache-events="ADDED, REMOVED, CLEAR_ALL" />
<bean id="multiMap" factory-bean="instance" factory-method="getMultiMap">
<constructor-arg value="multiMap"/>
</bean>
Distributed List :
<int:channel id="listChannel"/>
<int-hazelcast:inbound-channel-adapter channel="listChannel"
cache="list"
cache-events="ADDED, REMOVED"
cache-listening-policy="ALL" />
<bean id="list" factory-bean="instance" factory-method="getList">
<constructor-arg value="list"/>
</bean>
Distributed Set :
<int:channel id="setChannel"/>
<int-hazelcast:inbound-channel-adapter channel="setChannel" cache="set" />
<bean id="set" factory-bean="instance" factory-method="getSet">
<constructor-arg value="set"/>
</bean>
Distributed Queue :
<int:channel id="queueChannel"/>
<int-hazelcast:inbound-channel-adapter channel="queueChannel"
cache="queue"
cache-events="REMOVED"
cache-listening-policy="ALL" />
<bean id="queue" factory-bean="instance" factory-method="getQueue">
<constructor-arg value="queue"/>
</bean>
Distributed Topic :
<int:channel id="topicChannel"/>
<int-hazelcast:inbound-channel-adapter channel="topicChannel" cache="topic" />
<bean id="topic" factory-bean="instance" factory-method="getTopic">
<constructor-arg value="topic"/>
</bean>
Replicated Map :
<int:channel id="replicatedMapChannel"/>
<int-hazelcast:inbound-channel-adapter channel="replicatedMapChannel"
cache="replicatedMap"
cache-events="ADDED, UPDATED, REMOVED"
cache-listening-policy="SINGLE" />
<bean id="replicatedMap" factory-bean="instance" factory-method="getReplicatedMap">
<constructor-arg value="replicatedMap"/>
</bean>
<bean id="instance" class="com.hazelcast.core.Hazelcast"
factory-method="newHazelcastInstance">
<constructor-arg>
<bean class="com.hazelcast.config.Config" />
</constructor-arg>
</bean>
JavaConfig Driven Configuration :
The following sample shows Distributed Map configuration. Same configuration can be used for other distributed data structures(IMap, MultiMap, ReplicatedMap, IList, ISet, IQueue and ITopic).
@Bean
public PollableChannel distributedMapChannel() {
return new QueueChannel();
}
@Bean
public IMap<Integer, String> distributedMap() {
return hazelcastInstance().getMap("Distributed_Map");
}
@Bean
public HazelcastInstance hazelcastInstance() {
return Hazelcast.newHazelcastInstance();
}
@Bean
public HazelcastEventDrivenMessageProducer hazelcastEventDrivenMessageProducer() {
final HazelcastEventDrivenMessageProducer producer = new HazelcastEventDrivenMessageProducer(distributedMap());
producer.setOutputChannel(distributedMapChannel());
producer.setCacheEventTypes("ADDED,REMOVED,UPDATED,CLEAR_ALL");
producer.setCacheListeningPolicy(CacheListeningPolicyType.SINGLE);
return producer;
}
Reference : https://docs.hazelcast.org/docs/latest/manual/html/distributed-data-structures.html
HAZELCAST CONTINUOUS QUERY INBOUND CHANNEL ADAPTER
Hazelcast Continuous Query enables to listen to the modifications performed on specific map entries. Hazelcast Continuous Query Inbound Channel Adapter is an event-driven channel adapter and listens to related distributed map events in the light of defined predicate. It supports both XML and JavaConfig driven configurations.
XML Driven Configuration :
<int-hazelcast:cq-inbound-channel-adapter
channel="cqMapChannel"
cache="cqMap"
cache-events="UPDATED, REMOVED"
predicate="name=TestName AND surname=TestSurname"
include-value="true"
cache-listening-policy="SINGLE" />
Basically, it requires four attributes as follows :
- channel : Specifies channel which message is sent.
- cache : Specifies distributed Map reference which is listened. It is mandatory attribute.
- cache-events : Specifies cache events which are listened. It is optional attribute with ADDED default value. Supported values are ADDED, REMOVED, UPDATED, EVICTED, EVICT_ALL and CLEAR_ALL.
- predicate : Specifies predicate to listen to the modifications performed on specific map entries. It is mandatory attribute.
- include-value : Specifies including of value and oldValue in continuous query result. It is optional attribute with 'true' default value.
- cache-listening-policy : Specifies cache listening policy as SINGLE or ALL. It is optional attribute and its default value is SINGLE. Each Hazelcast CQ inbound channel adapter listening same cache object with same cache-events attribute, can receive a single event message or all event messages. If it is ALL, all Hazelcast CQ inbound channel adapters listening same cache object with same cache-events attribute, will receive same event messages. If it is SINGLE, they will receive unique event messages.
Sample definition is as follows :
<int:channel id="cqMapChannel"/>
<int-hazelcast:cq-inbound-channel-adapter
channel="cqMapChannel"
cache="cqMap"
cache-events="UPDATED, REMOVED"
predicate="name=TestName AND surname=TestSurname"
include-value="true"
cache-listening-policy="SINGLE"/>
<bean id="cqMap" factory-bean="instance" factory-method="getMap">
<constructor-arg value="cqMap"/>
</bean>
<bean id="instance" class="com.hazelcast.core.Hazelcast"
factory-method="newHazelcastInstance">
<constructor-arg>
<bean class="com.hazelcast.config.Config" />
</constructor-arg>
</bean>
JavaConfig Driven Configuration :
@Bean
public PollableChannel cqDistributedMapChannel() {
return new QueueChannel();
}
@Bean
public IMap<Integer, String> cqDistributedMap() {
return hazelcastInstance().getMap("CQ_Distributed_Map");
}
@Bean
public HazelcastInstance hazelcastInstance() {
return Hazelcast.newHazelcastInstance();
}
@Bean
public HazelcastContinuousQueryMessageProducer hazelcastContinuousQueryMessageProducer() {
final HazelcastContinuousQueryMessageProducer producer =
new HazelcastContinuousQueryMessageProducer(cqDistributedMap(), "surname=TestSurname");
producer.setOutputChannel(cqDistributedMapChannel());
producer.setCacheEventTypes("UPDATED");
producer.setIncludeValue(false);
return producer;
}
Reference : https://docs.hazelcast.org/docs/latest/manual/html/continuousquery.html
HAZELCAST CLUSTER MONITOR INBOUND CHANNEL ADAPTER
Hazelcast Cluster Monitor enables to listen to the modifications performed on cluster. Hazelcast Cluster Monitor Inbound Channel Adapter is an event-driven channel adapter and listens to related Membership, Distributed Object, Migration, Lifecycle and Client events. It supports both XML and JavaConfig driven configurations.
XML Driven Configuration :
<int-hazelcast:cm-inbound-channel-adapter
channel="monitorChannel"
hazelcast-instance="instance"
monitor-types="MEMBERSHIP, DISTRIBUTED_OBJECT, MIGRATION, LIFECYCLE, CLIENT" />
Basically, it requires four attributes as follows :
- channel : Specifies channel which message is sent.
- hazelcast-instance : Specifies Hazelcast Instance reference to listen cluster events. It is mandatory attribute.
- monitor-types : Specifies monitor types which are listened. It is optional attribute with MEMBERSHIP default value. Supported values are MEMBERSHIP, DISTRIBUTED_OBJECT, MIGRATION, LIFECYCLE, CLIENT.
Sample definition is as follows :
<int:channel id="monitorChannel"/>
<int-hazelcast:cm-inbound-channel-adapter
channel="monitorChannel"
hazelcast-instance="instance"
monitor-types="MEMBERSHIP, DISTRIBUTED_OBJECT" />
<bean id="instance" class="com.hazelcast.core.Hazelcast"
factory-method="newHazelcastInstance">
<constructor-arg>
<bean class="com.hazelcast.config.Config" />
</constructor-arg>
</bean>
JavaConfig Driven Configuration :
@Bean
public PollableChannel cmonChannel() {
return new QueueChannel();
}
@Bean
public HazelcastInstance hazelcastInstance() {
return Hazelcast.newHazelcastInstance();
}
@Bean
public HazelcastClusterMonitorMessageProducer hazelcastClusterMonitorMessageProducer() {
final HazelcastClusterMonitorMessageProducer producer = new HazelcastClusterMonitorMessageProducer(hazelcastInstance());
producer.setOutputChannel(cmonChannel());
producer.setMonitorEventTypes("DISTRIBUTED_OBJECT");
return producer;
}
Reference : https://docs.hazelcast.org/docs/latest/manual/html/distributedevents.html
HAZELCAST DISTRIBUTED-SQL INBOUND CHANNEL ADAPTER
Hazelcast allows to run distributed queries on the distributed map. Hazelcast Distributed SQL Inbound Channel Adapter is a poller-driven inbound channel adapter. It runs defined distributed-sql and returns results in the light of iteration type. It supports both XML and JavaConfig driven configurations.
XML Driven Configuration :
<int-hazelcast:ds-inbound-channel-adapter
channel="dsMapChannel"
cache="dsMap"
iteration-type="ENTRY"
distributed-sql="active=false OR age >= 25 OR name = 'TestName'">
<int:poller fixed-delay="100"/>
</int-hazelcast:ds-inbound-channel-adapter>
Basically, it requires a poller and four attributes such as
- channel : Specifies channel which message is sent. It is mandatory attribute.
- cache : Specifies distributed Map reference which is queried. It is mandatory attribute.
- iteration-type : Specifies result type. Distributed SQL can be run on EntrySet, KeySet, LocalKeySet or Values. It is optional attribute with VALUE default value. Supported values are ENTRY, KEY, LOCAL_KEY and VALUE.
- distributed-sql : Specifies where clause of sql statement. It is mandatory attribute.
Sample definition is as follows :
<int:channel id="dsMapChannel"/>
<int-hazelcast:ds-inbound-channel-adapter
channel="dsMapChannel"
cache="dsMap"
iteration-type="ENTRY"
distributed-sql="active=false OR age >= 25 OR name = 'TestName'">
<int:poller fixed-delay="100"/>
</int-hazelcast:ds-inbound-channel-adapter>
<bean id="dsMap" factory-bean="instance" factory-method="getMap">
<constructor-arg value="dsMap"/>
</bean>
<bean id="instance" class="com.hazelcast.core.Hazelcast"
factory-method="newHazelcastInstance">
<constructor-arg>
<bean class="com.hazelcast.config.Config" />
</constructor-arg>
</bean>
JavaConfig Driven Configuration :
@Bean
public PollableChannel dsDistributedMapChannel() {
return new QueueChannel();
}
@Bean
public IMap<Integer, String> dsDistributedMap() {
return hazelcastInstance().getMap("DS_Distributed_Map");
}
@Bean
public HazelcastInstance hazelcastInstance() {
return Hazelcast.newHazelcastInstance();
}
@Bean
@InboundChannelAdapter(value = "dsDistributedMapChannel", poller = @Poller(maxMessagesPerPoll = "1"))
public HazelcastDistributedSQLMessageSource hazelcastDistributedSQLMessageSource() {
final HazelcastDistributedSQLMessageSource messageSource =
new HazelcastDistributedSQLMessageSource(dsDistributedMap(),
"name='TestName' AND surname='TestSurname'");
messageSource.setIterationType(DistributedSQLIterationType.ENTRY);
return messageSource;
}
Reference : https://docs.hazelcast.org/docs/latest/manual/html/distributedquery.html
HAZELCAST OUTBOUND CHANNEL ADAPTER
Hazelcast Outbound Channel Adapter listens its defined channel and writes incoming messages to related distributed cache. It expects one of cache, cache-expression or HazelcastHeaders.CACHE_NAME for distributed object definition. Supported Distributed Objects : IMap, MultiMap, ReplicatedMap, IList, ISet, IQueue and ITopic. It supports both XML and JavaConfig driven configurations.
XML Driven Configuration :
<int-hazelcast:outbound-channel-adapter channel="mapChannel" cache="distributedMap" key-expression="payload.id" extract-payload="false"/>
Basically, it requires the following attributes :
channel : Specifies channel which message is sent.
- cache : Specifies distributed object reference. It is optional attribute.
- cache-expression : Specifies distributed object via Spring Expression Language(SpEL). It is optional attribute.
- key-expression : Specifies key of K,V pair via Spring Expression Language(SpEL). It is optional attribute and required for just IMap, MultiMap and ReplicatedMap distributed data structures.
- extract-payload : Specifies whole message or just payload to send. It is optional attribute with true default value. If it is true, just payload will be written to distributed object. Otherwise, whole message will be written by covering both message header and payload.
Sample Definitions :
<int-hazelcast:outbound-channel-adapter channel="mapChannel" cache="distributedMap" key-expression="payload.id" extract-payload="false"/>
OR
<int-hazelcast:outbound-channel-adapter channel="mapChannel" cache-expression="headers['CACHE_HEADER']" key-expression="payload.key" extract-payload="true"/>
By setting distributed object name in the header, messages can be written to different distributed objects via same channel.
OR
If cache or cache-expression attributes are not defined, HazelcastHeaders.CACHE_NAME has to be set in Message.
JavaConfig Driven Configuration :
@Bean
public MessageChannel distributedMapChannel() {
return new DirectChannel();
}
@Bean
public IMap<Integer, String> distributedMap() {
return hzInstance().getMap("Distributed_Map");
}
@Bean
public HazelcastInstance hzInstance() {
return Hazelcast.newHazelcastInstance();
}
@Bean
@ServiceActivator(inputChannel = "distributedMapChannel")
public HazelcastCacheWritingMessageHandler hazelcastCacheWritingMessageHandler() {
final HazelcastCacheWritingMessageHandler handler = new HazelcastCacheWritingMessageHandler();
handler.setDistributedObject(distributedMap());
handler.setKeyExpression(new SpelExpressionParser().parseExpression("payload.id"));
handler.setExtractPayload(true);
return handler;
}
HAZELCAST LEADER ELECTION
If you need to elect a leader (e.g. for highly available message consumer where only one node should receive messages)
you just need to create a LeaderInitiator. Example:
@Bean
public HazelcastInstance hazelcastInstance() {
return Hazelcast.newHazelcastInstance();
}
@Bean
public LeaderInitiator initiator() {
return new LeaderInitiator(hazelcastInstance());
}
Then when a node is elected leader it will send OnGrantedEvent to all application listeners. See
the Spring Integration User Guide
for more information on how to use those events to control messaging endpoints.
HAZELCAST MESSAGE STORE
For distributed messaging state management, for example for persistent QueueChannel or tracking Aggregator message groups, the HazelcastMessageStore implementation is provided:
@Bean
public HazelcastInstance hazelcastInstance() {
return Hazelcast.newHazelcastInstance();
}
@Bean
public MessageGroupStore messageStore() {
return new HazelcastMessageStore(hazelcastInstance());
}
By default the SPRING_INTEGRATION_MESSAGE_STORE IMap is used to store messages and groups key/value manner.
Any custom IMap can be provided to the HazelcastMessageStore.
See Spring Integration User Guide for more information about MessageStore.
HAZELCAST METADATA STORE
An implementation of a MetadataStore is available using a backing Hazelcast IMap
You can provide your own implementation of an IMap or rely on the default map created with name SPRING_INTEGRATION_METADATA_STORE.
@Bean
public HazelcastInstance hazelcastInstance() {
return Hazelcast.newHazelcastInstance();
}
@Bean
public MetadataStore metadataStore() {
return new HazelcastMetadataStore(hazelcastInstance());
}
The HazelcastMetadataStore implements ListenableMetadataStore which allows you to register your own listeners of type MetadataStoreListener to listen for events via addListener(MetadataStoreListener callback)
See Spring Integration User Guide for more information about the MetadataStoreListener interface.
HAZELCAST LOCK REGISTRY
An implementation of a LockRegistry is available using a backing Hazelcast distributed ILock support:
@Bean
public HazelcastInstance hazelcastInstance() {
return Hazelcast.newHazelcastInstance();
}
@Bean
public LockRegistry lockRegistry() {
return new HazelcastLockRegistry(hazelcastInstance());
}
When used with a shared MessageGroupStore (e.g. Aggregator store management), the HazelcastLockRegistry can be use to provide this functionality across multiple application instances, such that only one instance can manipulate the group at a time.