You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- to avoid having to load the whole document
- provide a link to the single page version for browser search
* Fix cross-document links.
Links need to be qualified with the containing file name for the
multi-page html doc.
Copy file name to clipboardExpand all lines: src/reference/asciidoc/aggregator.adoc
+7-7
Original file line number
Diff line number
Diff line change
@@ -108,7 +108,7 @@ It is done only if the message group release result is not a message or collecti
108
108
In that case a target `MessageGroupProcessor` is responsible for the `MessageBuilder.popSequenceDetails()` call while building those messages.
109
109
This functionality can be controlled by a new `popSequence` `boolean` property, so the `MessageBuilder.popSequenceDetails()` can be disabled in some scenarios when correlation details have not been populated by the standard splitter.
110
110
This property, essentially, undoes what has been done by the nearest upstream `applySequence = true` in the `AbstractMessageSplitter`.
111
-
See <<splitter>> for more information.
111
+
See <<./splitter.adoc#splitter,Splitter>> for more information.
112
112
113
113
[[agg-message-collection]]
114
114
IMPORTANT: The `SimpleMessageGroup.getMessages()` method returns an `unmodifiableCollection`.
@@ -223,7 +223,7 @@ The 4.3 release changed the default `Collection` for messages in a `SimpleMessag
223
223
This was expensive when removing individual messages from large groups (an O(n) linear scan was required).
224
224
Although the hash set is generally much faster to remove, it can be expensive for large messages, because the hash has to be calculated on both inserts and removes.
225
225
If you have messages that are expensive to hash, consider using some other collection type.
226
-
As discussed in <<message-group-factory>>, a `SimpleMessageGroupFactory` is provided so that you can select the `Collection` that best suits your needs.
226
+
As discussed in <<./message-store.adoc#message-group-factory,Using `MessageGroupFactory`>>, a `SimpleMessageGroupFactory` is provided so that you can select the `Collection` that best suits your needs.
227
227
You can also provide your own factory implementation to create some other `Collection<Message<?>>`.
228
228
229
229
The following example shows how to configure an aggregator with the previous implementation and a `SimpleSequenceSizeReleaseStrategy`:
@@ -324,7 +324,7 @@ Of course, the first solution above does not apply in this case.
324
324
[[aggregator-java-dsl]]
325
325
==== Configuring an Aggregator in Java DSL
326
326
327
-
See <<java-dsl-aggregators>> for how to configure an aggregator in Java DSL.
327
+
See <<./dsl.adoc#java-dsl-aggregators,Aggregators and Resequencers>> for how to configure an aggregator in Java DSL.
328
328
329
329
[[aggregator-xml]]
330
330
===== Configuring an Aggregator with XML
@@ -399,7 +399,7 @@ Optional.
399
399
<6> A reference to a `MessageGroupStore` used to store groups of messages under their correlation key until they are complete.
400
400
Optional.
401
401
By default, it is a volatile in-memory store.
402
-
See <<message-store>> for more information.
402
+
See <<./message-store.adoc#message-store,Message Store>> for more information.
403
403
<7> The order of this aggregator when more than one handle is subscribed to the same `DirectChannel` (use for load-balancing purposes).
404
404
Optional.
405
405
<8> Indicates that expired messages should be aggregated and sent to the 'output-channel' or 'replyChannel' once their containing `MessageGroup` is expired (see https://docs.spring.io/spring-integration/api/org/springframework/integration/store/MessageGroupStore.html#expireMessageGroups-long[`MessageGroupStore.expireMessageGroups(long)`]).
@@ -457,7 +457,7 @@ Note that the actual time to expire an empty group is also affected by the reape
457
457
It used to obtain a `Lock` based on the `groupId` for concurrent operations on the `MessageGroup`.
458
458
By default, an internal `DefaultLockRegistry` is used.
459
459
Use of a distributed `LockRegistry`, such as the `ZookeeperLockRegistry`, ensures only one instance of the aggregator can operate on a group concurrently.
460
-
See <<redis-lock-registry>>, <<gemfire-lock-registry>>, and <<zk-lock-registry>> for more information.
460
+
See <<./redis.adoc#redis-lock-registry,Redis Lock Registry>>, <<./gemfire.adoc#gemfire-lock-registry,Gemfire Lock Registry>>, and <<./zookeeper.adoc#zk-lock-registry,Zookeeper Lock Registry>> for more information.
461
461
<21> A timeout (in milliseconds) to force the `MessageGroup` complete when the `ReleaseStrategy` does not release the group when the current message arrives.
462
462
This attribute provides a built-in time-based release strategy for the aggregator when there is a need to emit a partial result (or discard the group) if a new message does not arrive for the `MessageGroup` within the timeout.
463
463
When a new message arrives at the aggregator, any existing `ScheduledFuture<?>` for its `MessageGroup` is canceled.
@@ -750,7 +750,7 @@ public MessageHandler aggregator(MessageGroupStore jdbcMessageGroupStore) {
750
750
----
751
751
====
752
752
753
-
See <<aggregator-api>> and <<annotations_on_beans>> for more information.
753
+
See <<aggregator-api>> and <<./configuration.adoc#annotations_on_beans,Annotations on `@Bean` Methods>> for more information.
754
754
755
755
NOTE: Starting with version 4.2, the `AggregatorFactoryBean` is available to simplify Java configuration for the `AggregatingMessageHandler`.
756
756
@@ -863,5 +863,5 @@ Messages with the same correlation key are stored in the same message group.
863
863
Some `MessageStore` implementations allow using the same physical resources, by partitioning the data.
864
864
For example, the `JdbcMessageStore` has a `region` property, and the `MongoDbMessageStore` has a `collectionName` property.
865
865
866
-
For more information about the `MessageStore` interface and its implementations, see <<message-store>>.
866
+
For more information about the `MessageStore` interface and its implementations, see <<./message-store.adoc#message-store,Message Store>>.
Copy file name to clipboardExpand all lines: src/reference/asciidoc/amqp.adoc
+3-3
Original file line number
Diff line number
Diff line change
@@ -294,7 +294,7 @@ The default `BatchingStrategy` is the `SimpleBatchingStrategy`, but this can be
294
294
==== Overview
295
295
296
296
Version 5.0.1 introduced a polled channel adapter, letting you fetch individual messages on demand -- for example, with a `MessageSourcePollingTemplate` or a poller.
297
-
See <<deferred-acks-message-source>> for more information.
297
+
See <<./polling-consumer.adoc#deferred-acks-message-source,Deferred Acknowledgment Pollable Message Source>> for more information.
298
298
299
299
It does not currently support XML configuration.
300
300
@@ -1036,7 +1036,7 @@ When `true` (the default), the connection is established (if it does not already
1036
1036
it) when the first message is sent.
1037
1037
====
1038
1038
1039
-
See also <<async-service-activator>> for more information.
1039
+
See also <<./service-activator.adoc#async-service-activator,Asynchronous Service Activator>> for more information.
1040
1040
1041
1041
[IMPORTANT]
1042
1042
.RabbitTemplate
@@ -1492,7 +1492,7 @@ This is because the template "`borrows`" a channel from the cache for each send
1492
1492
One solution is to start a transaction before the splitter, but transactions are expensive in RabbitMQ and can reduce performance several hundred fold.
1493
1493
1494
1494
To solve this problem in a more efficient manner, starting with version 5.1, Spring Integration provides the `BoundRabbitChannelAdvice` which is a `HandleMessageAdvice`.
1495
-
See <<handle-message-advice>>.
1495
+
See <<./handler-advice.adoc#handle-message-advice,Handling Message Advice>>.
1496
1496
When applied before the splitter, it ensures that all downstream operations are performed on the same channel and, optionally, can wait until publisher confirmations for all sent messages are received (if the connection factory is configured for confirmations).
1497
1497
The following example shows how to use `BoundRabbitChannelAdvice`:
Copy file name to clipboardExpand all lines: src/reference/asciidoc/chain.adoc
+1-1
Original file line number
Diff line number
Diff line change
@@ -121,7 +121,7 @@ In this case, it is 'somethingChain$child#1'.
121
121
Note, this transformer is not registered as a bean within the application context, so it does not get a `beanName`.
122
122
However its `componentName` has a value that is useful for logging and other purposes.
123
123
124
-
The `id` attribute for `<chain>` elements lets them be eligible for <<jmx-mbean-exporter,JMX export>>, and they are trackable in the <<message-history,message history>>.
124
+
The `id` attribute for `<chain>` elements lets them be eligible for <<./jmx.adoc#jmx-mbean-exporter,,JMX export>>, and they are trackable in the <<./message-history.adoc#message-history,,message history>>.
125
125
You can access them from the `BeanFactory` by using the appropriate bean name, as discussed earlier.
126
126
127
127
TIP: It is useful to provide an explicit `id` attribute on `<chain>` elements to simplify the identification of sub-components in logs and to provide access to them from the `BeanFactory` etc.
Copy file name to clipboardExpand all lines: src/reference/asciidoc/changes-1.0-2.0.adoc
+17-17
Original file line number
Diff line number
Diff line change
@@ -18,7 +18,7 @@ This guide includes many samples.
18
18
===== Conversion Service and Converter
19
19
20
20
You can now benefit from the conversion service support provided with Spring while configuring many Spring Integration components, such as a https://www.enterpriseintegrationpatterns.com/DatatypeChannel.html[Datatype channel].
21
-
See <<channel-implementations>> and <<service-activator>>.
21
+
See <<./channel.adoc#channel-implementations,Message Channel Implementations>> and <<./service-activator.adoc#service-activator,Service Activator>>.
22
22
Also, the SpEL support mentioned in the previous point also relies upon the conversion service.
23
23
Therefore, you can register converters once and take advantage of them anywhere you use SpEL expressions.
24
24
@@ -30,14 +30,14 @@ Spring Integration (which uses a lot of scheduling) now builds upon these.
30
30
In fact, Spring Integration 1.0 had originally defined some of the components (such as `CronTrigger`) that have now been migrated into Spring 3.0's core API.
31
31
Now you can benefit from reusing the same components within the entire application context (not just Spring Integration configuration).
32
32
We also greatly simplified configuration of Spring Integration pollers by providing attributes for directly configuring rates, delays, cron expressions, and trigger references.
33
-
See <<channel-adapter>> for sample configurations.
33
+
See <<./channel-adapter.adoc#channel-adapter,Channel Adapter>> for sample configurations.
34
34
35
35
[[rest-support]]
36
36
===== `RestTemplate` and `HttpMessageConverter`
37
37
38
38
Our outbound HTTP adapters now delegate to Spring's `RestTemplate` for executing the HTTP request and handling its response.
39
39
This also means that you can reuse any custom `HttpMessageConverter` implementations.
40
-
See <<http-outbound>> for more details.
40
+
See <<./http.adoc#http-outbound,HTTP Outbound Components>> for more details.
41
41
42
42
[[new-eip]]
43
43
==== Enterprise Integration Pattern Additions
@@ -48,30 +48,30 @@ Also in 2.0, we have added support for even more of the patterns described in Ho
48
48
===== Message History
49
49
50
50
We now provide support for the https://www.enterpriseintegrationpatterns.com/MessageHistory.html[message history] pattern, letting you keep track of all traversed components, including the name of each channel and endpoint as well as the timestamp of that traversal.
51
-
See <<message-history>> for more details.
51
+
See <<./message-history.adoc#message-history,Message History>> for more details.
52
52
53
53
[[new-message-store]]
54
54
===== Message Store
55
55
56
56
We now provide support for the https://www.enterpriseintegrationpatterns.com/MessageStore.html[message store] pattern.
57
57
The message store provides a strategy for persisting messages on behalf of any process whose scope extends beyond a single transaction, such as the aggregator and the resequencer.
58
58
Many sections of this guide include samples of how to use a message store, as it affects several areas of Spring Integration.
59
-
See <<message-store>>, <<claim-check>>, <<channel>>, <<aggregator>>, <<jdbc>>`", and <<resequencer>> for more details.
59
+
See <<./message-store.adoc#message-store,Message Store>>, <<./claim-check.adoc#claim-check,Claim Check>>, <<./channel.adoc#channel,Message Channels>>, <<./aggregator.adoc#aggregator,Aggregator>>, <<./jdbc.adoc#jdbc,JDBC Support>>`", and <<./resequencer.adoc#resequencer,Resequencer>> for more details.
60
60
61
61
[[new-claim-check]]
62
62
===== Claim Check
63
63
64
64
We have added an implementation of the https://www.enterpriseintegrationpatterns.com/StoreInLibrary.html[claim check] pattern.
65
65
The idea behind the claim check pattern is that you can exchange a message payload for a "`claim ticket`".
66
66
This lets you reduce bandwidth and avoid potential security issues when sending messages across channels.
67
-
See <<claim-check>> for more details.
67
+
See <<./claim-check.adoc#claim-check,Claim Check>> for more details.
68
68
69
69
[[new-control-bus]]
70
70
===== Control Bus
71
71
72
72
We have provided implementations of the https://www.enterpriseintegrationpatterns.com/ControlBus.html[control bus] pattern, which lets you use messaging to manage and monitor endpoints and channels.
73
73
The implementations include both a SpEL-based approach and one that runs Groovy scripts.
74
-
See <<control-bus>> and <<groovy-control-bus>> for more details.
74
+
See <<./control-bus.adoc#control-bus,Control Bus>> and <<./groovy.adoc#groovy-control-bus,Control Bus>> for more details.
75
75
76
76
[[new-adapters]]
77
77
==== New Channel Adapters and Gateways
@@ -82,7 +82,7 @@ We have added several new channel adapters and messaging gateways in Spring Inte
82
82
===== TCP and UDP Adapters
83
83
84
84
We have added channel adapters for receiving and sending messages over the TCP and UDP internet protocols.
85
-
See <<ip>> for more details.
85
+
See <<./ip.adoc#ip,TCP and UDP Support>> for more details.
86
86
See also the following blog: https://spring.io/blog/2010/03/29/using-udp-and-tcp-adapters-in-spring-integration-2-0-m3/["`Using UDP and TCP Adapters in Spring Integration 2.0 M3`"].
87
87
88
88
[[new-twitter]]
@@ -96,25 +96,25 @@ See https://github.com/spring-projects/spring-integration-extensions/tree/master
96
96
===== XMPP Adapters
97
97
98
98
The new XMPP adapters support both chat messages and presence events.
99
-
See <<xmpp>> for more details.
99
+
See <<./xmpp.adoc#xmpp,XMPP Support>> for more details.
100
100
101
101
[[new-ftp]]
102
102
===== FTP and FTPS Adapters
103
103
104
104
Inbound and outbound file transfer support over FTP and FTPS is now available.
105
-
See <<ftp>> for more details.
105
+
See <<./ftp.adoc#ftp,FTP/FTPS Adapters>> for more details.
106
106
107
107
[[new-sftp]]
108
108
===== SFTP Adapters
109
109
110
110
Inbound and outbound file transfer support over SFTP is now available.
111
-
See <<sftp>> for more details.
111
+
See <<./sftp.adoc#sftp,SFTP Adapters>> for more details.
112
112
113
113
[[new-feed]]
114
114
===== Feed Adapters
115
115
116
116
We have also added channel adapters for receiving news feeds (ATOM and RSS).
117
-
See <<feed>> for more details.
117
+
See <<./feed.adoc#feed,Feed Adapter>> for more details.
118
118
119
119
[[new-other]]
120
120
==== Other Additions
@@ -125,33 +125,33 @@ This section describes them.
125
125
===== Groovy Support
126
126
127
127
Spring Integration 2.0 added Groovy support, letting you use the Groovy scripting language to provide integration and business logic.
128
-
See <<groovy>> for more details.
128
+
See <<./groovy.adoc#groovy,Groovy support>> for more details.
129
129
130
130
[[new-map-transformer]]
131
131
===== Map Transformers
132
132
133
133
These symmetrical transformers convert payload objects to and from `Map` objects.
134
-
See <<transformer>> for more details.
134
+
See <<./transformer.adoc#transformer,Transformer>> for more details.
135
135
136
136
[[new-json-transformer]]
137
137
===== JSON Transformers
138
138
139
139
These symmetrical transformers convert payload objects to and from JSON.
140
-
See <<transformer>> for more details.
140
+
See <<./transformer.adoc#transformer,Transformer>> for more details.
141
141
142
142
[[new-serialize-transformer]]
143
143
===== Serialization Transformers
144
144
145
145
These symmetrical transformers convert payload objects to and from byte arrays.
146
146
They also support the serializer and deserializer strategy interfaces that Spring 3.0.5 added.
147
-
See <<transformer>> for more details.
147
+
See <<./transformer.adoc#transformer,Transformer>> for more details.
148
148
149
149
[[new-refactoring]]
150
150
==== Framework Refactoring
151
151
152
152
The core API went through some significant refactoring to make it simpler and more usable.
153
153
Although we anticipate that the impact to developers should be minimal, you should read through this document to find what was changed.
154
-
Specifically, you should read <<dynamic-routers>>, <<gateway>>, <<http-outbound>>, <<message>>, and <<aggregator>>.
154
+
Specifically, you should read <<./router.adoc#dynamic-routers,Dynamic Routers>>, <<./gateway.adoc#gateway,Messaging Gateways>>, <<./http.adoc#http-outbound,HTTP Outbound Components>>, <<./message.adoc#message,Message>>, and <<./aggregator.adoc#aggregator,Aggregator>>.
155
155
If you directly depend on some of the core components (`Message`, `MessageHeaders`, `MessageChannel`, `MessageBuilder`, and others), you need to update any import statements.
156
156
We restructured some packaging to provide the flexibility we needed for extending the domain model while avoiding any cyclical dependencies (it is a policy of the framework to avoid such "`tangles`").
0 commit comments