JIRA: https://jira.spring.io/browse/INT-3499
- Suppress (log) 'null' payload error when no correlation data
- Change tests to use a dedicated template for confirms/returns
Conflicts:
spring-integration-amqp/src/test/java/org/springframework/integration/amqp/config/AmqpOutboundChannelAdapterParserTests.java
src/reference/docbook/amqp.xml
Resolved.
JIRA: https://jira.spring.io/browse/INT-3433`
If a read fails due to insufficient threads, delay the read
for (default 100ms) - do not re-enable OP_READ until that
time has elapsed. Avoids spinning the CPU.
INT-3433 More Polishing
If the assembler couldn't execute a new assembler after assembling
the current message (when it detected there is more data), in the
finally block it would "continue" only if the socket was still
open.
The test case closes the socket after sending 4 messages so when
this condition occurred, the assembler failed to continue and
data was left in the buffer.
Remove the `isOpen()` check in the finally block and always continue
if there's not another assembler running and there's data available.
INT-3433 More Polishing
We can still get starvation if the selector is in a long
wait (in select()) when a read is delayed.
Whenever a read is delayed, wake the selector so its next
select will use the readDelay timeout.
INT-3433 Reference Docs
Also remove Thread.yield().
Revert redundant boolean return from `TcpNioConnection#checkForAssembler()`
JIRA: https://jira.spring.io/browse/INT-3410
When running a fixed thread pool with a bound queue,
and CALLER_RUNS execution rejection policy, it
was possible to deadlock the IO selector thread.
Add a `CompositeExecutor` to use different threads for
IO to those used for message assembly.
Add a `CallerBlocksPolicy` to block the invoking thread
(for a specified time) if the pool is exhausted.
Add documentation.
Polishing
Reference docs in preface mention Spring Integration compatibility with
Java 8, once it's released. Since Java 8 is released, the extra note is
no longer relevant and should be removed.
This patch removes no longer relevant note of pending Java 8 release.
JIRA: https://jira.spring.io/browse/INT-3400
JIRA: https://jira.spring.io/browse/INT-1956
Emit an application event when a decoding exception
occurs, allowing the user to examine the buffer
at the time the exception occurred.
INT-1956: Polishing
Polishing
Use `OP_READ` instead of `readyOps()` when removing interest.
Polishing - Fix ConnectionTimeoutTests
Test publisher was casting all events to TcpConnectionEvent.
JIRA: https://jira.spring.io/browse/INT-2879
* Add `id-expression` attribute for the `<int-jpa:retrieving-outbound-gateway>`
* Make it mutually exclusive with other `SELECT` attributes
* Remove deprecated `max-number-of-results`
INT-2879 Polishing
- Improve parser error message.
- Minor doc polish.
INT-2879: Support `delete-after-poll` and `flush`
JIRA: https://jira.spring.io/browse/INT-3065
Improve `TwitterSearchOutboundGateway` to use an expression
to build the tweet instead of just using the payload (which
remains the default).
JIRA:https://jira.spring.io/browse/INT-3385
MANUAL was supported in the schema, but there was no
mechanism for the application to ack.
Polishing
- Fix tests
- Add integration test
- More documentation
JIRA: https://jira.spring.io/browse/INT-2586
Add timeout properties to the `DefaultFtpSessionFactory`
avoiding the need to subclass it just to set these
common properties.
JIRA: https://jira.spring.io/browse/INT-2352
Add `replaceChannelMappings()` to the `AMMR`.
INT-2352 Polishing - PR Comments
Consolidate tests.
Fix up `@ManagedAttribute` Vs `@ManagedOperation`
Expose `setChannelMappings` over JMX
JIRA: https://jira.spring.io/browse/INT-3338
INT-3338: Add Docs
INT-3338: Make `priority` 'smart'
Add `Sort` for all group queries dependently of `priorityEnabled`.
Avoids the need to configure separate collections for different type of `MessageStore`
INT-3338: Add `MongoDbChannelMessageStore`
INT-3338: Polishing, Fixes, Improvements
Doc Polishing
Fix stream test.
JIRA: https://jira.spring.io/browse/INT-1939
Outbound gateway to allow on-demand variable searches.
Also add the `page-size` attribute to inbound adapters (previously
hard-coded to 20).
Also the inbound adapters now `require` a `TwitterTemplate` because even
search requires authentication.
Polishing - PR Comments
- Bump to spring-social-twitter 1.0.0.RC1
- Remove `requires-reply`
- Polishing
- Add integration test
INT-1939 Doc and Rework
Now supports up to 4 search args (as well as a
SearchParameters).
INT-1939: Polishing
JIRA: https://jira.spring.io/browse/INT-3351
INT-3351: Polishing according PR comments
* Add `property-placeholder` support for `@Poller`
* Change `ref` to `value`
* Add JavaDoc for `array` workaround
* Add docs
INT-3351: Polishing and fixes
INT-3351 More Tests
INT-3351: PR comments
INT-3351 Final Polishing
JIRA: https://jira.spring.io/browse/INT-2595
* Add `group-timeout` and `group-timeout-expression` to the Correlation Endpoint
* Add logic to the `AbstractCorrelatingMessageHandler` to schedule group for `forceComplete`,
when the target `ReleaseStrategy` returns `false`
INT-2595: Polishing according PR comments
INT-2595: Expose `lock-registry` and further docs
INT-2595 Doc and Test Polishing
INT-2595: Fix typos
INT-2595 More Minor Doc Polish
JIRA: https://jira.spring.io/browse/INT-3337
INT-3337: Addressing PR comments
INT-3337: Add support to store/read Messages
* Add support to store/read `ErrorMessage`. As a trick for `Throwable` is selected (de)serializing converter
INT-3337: Add converters for `Message<?>` impls
INT-3337: Make `MDbMS.MessageWrapper` AuditAware
Add `_id` persistence field
Addressing PR comments
Polishing
- Docs
- Check for null ApplicationContext
- Add afterPropertiesSet() to tests
JIRA: https://jira.spring.io/browse/INT-3326
INT-3326: Add parent-child test
INT-3326: Fix `ClassCastException` for `GCII`
INT-3326: Rebase and Polishing
INT-3326: Fix `GCII` for `getBeanNamesForType`
INT-3326: Add `GlobalChannelInterceptor` annotation
JIRA: https://jira.spring.io/browse/INT-3326
INT-3326: Add parent-child test
INT-3326: Fix `ClassCastException` for `GCII`
INT-3326: Rebase and Polishing
INT-3326: Fix `GCII` for `getBeanNamesForType`
INT-3326 Polishing Doc, JavaDocs
Also fix a typo in the bean name for the CI processor.
INT-3326: Polishing
Doc Polishing
JIRA: https://jira.spring.io/browse/INT-3331
INT-3331: PR comments and others
* Register `ChannelSecurityInterceptorBeanPostProcessor` as a `BeanDefinition` (not `BPP`)
* Get `ChannelSecurityInterceptor`s from `ChannelSecurityInterceptorBeanPostProcessor#afterPropertiesSet()`
* Make `ChannelSecurityInterceptor` `final` to disallow to subclass it for unexpected issues
* Provide more convenience to the `ChannelSecurityInterceptorFactoryBean` - to allow to use it from xml configuration
Doc Polishing
JIRA: https://jira.spring.io/browse/INT-3336
Previously exceptions thrown in a flow downstream of a
message-driven-channel-adapter were not logged and thrown
back to the client, causing the connection to drop and
reconnect.
Add `error-channel` to the adapter to allow normal
error handling. If no error channel, catch and log
the unhandled exception.
Add `adapter.stop();` in the end of 'real' tests to close the mqtt-connection
Implicit channel declaration for items downstream
of a `ChannelInterceptor` were not created.
The `BPP` eagerly fetched the interceptors during its
own creation; this caused the context initialization to fail
because the channel initializer hasn't run yet.
Defer creation of the interceptor beans until they are
actually needed.
Also, when using `@Configuration`, the channelInitializer
is no longer the first bean in the bean factory.
INT-3332 Use SmartLifeCycle to Apply Interceptors
Instead of using a bean post processor, the interceptor
processor now performs the channel interception when beans
in phase Integer.MIN_VALUE are started - after all beans
have been instantiated.
Polishing
JIRA: https://jira.spring.io/browse/INT-3325
JIRA: https://jira.spring.io/browse/INT-1870
Optimized MGS for QueueChannel - uses a LIST for
each channel and LPUSH, RPOP.
* Also fix MutableMessage to be Serializable
INT-1870 Priority Redis Channel Message Store
Supports priorities 0-9 (+ no priority).
Priorities out of that range are treated as no priority.
Polishing - Add Marker Interfaces
* Emit a `WARN` log if a channel is used with a regular MessageGroupStore
* Allow message-store on namespace when defining a priority channel
INT-3325 Polishing; PR Comments
Fix some typos in JavaDocs and Docs
JIRA: https://jira.spring.io/browse/INT-3322
Support the use of an ExpressionEvaluatingSqlParameterSource
from the ExpressionEvaluatingSqlParameterSourceFactory as the
`select-sql-parameter-source` for an inbound channel adapter.
Add documentation showing how to construct the bean.
Add a mechanism to disable caching so that the expression is
re-evaluated each time. However, the value should still be
cached between the `hasValue()` and `getValue()` calls.
INT-3322 Polishing; PR Comments
JIRA: https://jira.spring.io/browse/INT-3041
Add namespace support to simplify configuration of
a `RequestHandlerRetryAdvice.
INT-3041 Polishing; PR Comments
* Allow a retry-advice element within the request-handler-advice-chain
* Clean up schema (should not have allowed `synchronization-factory` on
the request-handler-advice-chain.
INT-3041 Polishing; PR Comment
JIRA: https://jira.springsource.org/browse/INT-3288
Previously, if you wanted to have a JMS outbound-channel-adapter
participate in an upstream JMS transaction (or use transactions
at all), you had to inject a `JmsTemplate` with `sessionTransacted`
set to `true`.
The `session-transacted` attribute has been added to the adapter,
allowing transactions to be used with the default `JmsTemplate`,
avoiding the need to inject a separate template.
Also, the inbound (polled) channel adapter incorrectly allowed
the `acknowledge` attribute to be set to `transacted` which is invalid and,
again, you had to inject an appropriately configured JmsTemplate
for transactions.
The inbound-channel-adapter now supports `session-transacted` as
well, and `acknowledge` can no longer be set to `transacted`.
There are no changes to the `message-driven-channel-adapter`, you
enable transactions with it by setting `acknowledge="transacted"`
as before.
INT-3288 Doc Polishing; Integration Tests