Commit Graph

58 Commits

Author SHA1 Message Date
Artem Bilan
31d0e42c1a INT-2718 & INT-2721: fixes for <chain> & fix bugs
* ban to use 'channel' and 'request-channel' attributes for 'outbound-channel-adapters' and 'outbound-gateways' when they are declared inside the `<chain>`
* fix usage of `<request-handler-advice-chain>` for components when they are declared inside the `<chain>`
* ban to use `<request-handler-advice-chain>` for 'outbound-channel-adapters' when they are declared inside the `<chain>` don't implement `AbstractReplyProducingMessageHandler`
* refactor `IntegrationNamespaceUtils` to use `BeanDefinition` instead of `BeanDefinitionBuilder` for 'advice-chain' parsing
* tests for new logic for 'channel' and 'request-channel' attributes within `<chain>`
* tests for new logic for `<request-handler-advice-chain>` within `<chain>`
* fix failed test on slow machine
* fix `SysLogTransformer` tests

For reference:
https://jira.springsource.org/browse/INT-2718
https://jira.springsource.org/browse/INT-2721
https://jira.springsource.org/browse/INT-2719

INT-2718 Polishing
2012-09-10 16:13:45 -04:00
Gary Russell
81cf46af70 INT-2532 AMQP Schema Doc Clarification
Can't use <rabbit:listener-container/> when injecting an
external container into an endpoint.
2012-09-07 08:11:53 -04:00
Gary Russell
273bba370b INT-2730 Move OrderlyShutDownAware Interface
Move from core to context.
2012-08-31 17:57:33 -04:00
Oleg Zhurakousky
6528574c7e INT-2713 AMQP Content-Type Mapping
Adjusted DefaultAmqpHeaderMapper to recognize and convert Content-Type
to String if the incoming Content-Type headers is of type
org.springframework.http.MediaType.

INT-2713 polishing
2012-08-15 18:51:31 -04:00
Gary Russell
08cbab08c2 INT-2214, INT-343, INT-2250 MessageHandler Advice
Add general capability to advise just the handleRequestMessage
part of an AbstractReplyProducingMessageHandler.

This is to advise just the immediate operation, and not the
entire downstream flow.

Uses include:

* outbound gateway post processing
* adding retry behavior using spring-retry
* adding circuit breaker functionality

Initial commit for review.

Also need to advise simple message handlers (such as file
etc) to allow them to post-process file operations
with payload.delete(), payload.renameTo(...) etc.

INT-2250 Add Circuit Breaker Advice

INT-343 Add Retry Advice

Stateless and Stateful retry using spring-retry. Stateless
means the RetryTemplate performs the retries internally.
Stateful means the exception is thrown (e.g. to JMS container)
and the retry state is maintained by spring-retry.

INT-2215, INT-343, INT-2250 Refactoring

Factor out common abstract Advice class.

INT-2214 Catch Evaluation Expression Exceptions

If an onSuccess expression evaluation fails, add an
option so the user can decide whether such an exception is
caught, or propagated to the caller.

INT-2214 etc PR Review Polishing

INT-2214 etc Namespace Core, File, FTP

Add <request-handler-advice-chain/> to outbound endpoints.

INT-2214 etc. More Namespace Support

amqp, event, gemfire, groovy, http, ip, jdbc, jms, jmx, jpa, mail, rmi, sftp, twitter, ws, xmpp

INT-2214 etc Polishing

PR Review

INT-2214 etc Polishing

Don't catch Throwable.

Move Advice classes to handler.advice package.
2012-08-06 09:15:58 -04:00
Gunnar Hillert
b07abcd30c INT-2262 - Add reply-timeout to Outbound Gateways
For reference see: https://jira.springsource.org/browse/INT-2262

Add reply-timeout attribute to:

* Amqp Outbound Gateway
* File Outbound Gateway
* Ftp Outbound Gateway
* Sftp Outbound Gateway
* Ws Outbound Gateway

Update Schema Documentation for reply-timeout attribute:

* spring-integration-jpa-2.2.xsd
* spring-integration-jms-2.2.xsd
* spring-integration-jdbc-2.2.xsd
* spring-integration-ip-2.2.xsd
* spring-integration-http-2.2.xsd

Update the *What's new in Spring Integration 2.2* section in the reference manual

INT-2262 - Code Review

* Update copyright year for affected files
* Update author tags for affected files
2012-07-16 14:37:16 -04:00
Gary Russell
2ecb14de2a INT-2285 Implement max-subscribers on Channels
Add a subscriber limit on both unicast and publish-subscribe
channels. This permits detection of inadvertent channel wiring
during context initialization.

Also add a mechanism to globally set these defaults.

Two properties are added to ChannelInitializer. If the
'channelInitializer' bean is declared before a channel, and
these properties are set, it will globally override the
default (Integer.MAX_VALUE) for these properties.

For example:

    <bean id="channelInitializer" class="org.springframework.integration.config.xml.ChannelInitializer">
        <property name="autoCreate" value="true" />
        <property name="defaultMaxUnicastSubscribers" value="1" />
        <property name="defaultMaxMulticastSubscribers" value="2" />
    </bean>

will make the default max-subscribers 1 and 2 for <channel/> and
<publish-subscribe/> channels respectively.

Also applies to module channels (jms, amqp, redis).
2012-07-16 14:12:27 -04:00
Gary Russell
ae0abc4f6c INT-2515 More Orderly Shutdown
* Add beginShutdown() and endShutdown() to OrderlyShutdownCapable
* JMS/AMQP stop listener containers
* TCP (server side)
** after beginShutdown() disallow new connections, drop (log) new messages
** after endShutdown() close server socket
* HTTP (server side)
** after beginShutdown() disallow any new requests (503 Service Unavailable)

* Docbook updates
** What's new section
** Orderly Shutdown section.
2012-06-26 10:31:22 -04:00
Artem Bilan
5bc41bc60b INT-1029: Support for outbound-gateways in chain
XSD refactoring: remove use="required" from 'request-channel' attribute of all 'outbound-gateways'
Tests for all 'outbound-gateways' inside the <chain>
2012-06-07 13:20:56 -04:00
Oleg Zhurakousky
9656ee70f4 INT-2453 content-type and ObjectToJsonTransformer
Added 'content-type' functionality to ObjectToJsonTransformer

Added 'content-type' attribute to object-to-json-transformer element

Added parser and usage tests to ensure propper overrides
(see Mark's last comment here https://github.com/SpringSource/spring-integration/pull/409)

Applied required changes to Amqp module to work with standard 'content-type' header

INT-2453 polish based on PR comments

INT-2453 polished test

INT-2453 polished parser
2012-05-15 16:56:11 -04:00
Gary Russell
11e5fe0c0c INT-2394 Support HA (Mirrored) Queues
Changes to Connection Factory interface (stub).

INT-2394 Polishing

INT-2394 Map Gateway Correlation Header

Map spring_reply_correlation if present.

INT-2394 Map ReplyTo Stack

Enable the use outbound-gateway in a destination application
to which we sent a message using another outbound gateway.

The RabbitTemplate now pushed exising correlation data onto
a stacked header attribute.

INT-2509 Publisher Confirms and Returns

Add Publisher Confirm support to the outbound channel
adapter.

Add returns support to outbound channel adapter and gateway.

INT-2509 Polishing

PR Review comments.

Docs.

Fix chain test after rebase.
2012-05-14 18:09:59 -04:00
Artem Bilan
45c429ee2b INT-2275: any outbound-channel-adapter in <chain>
Add re-init logic for nested chains
Add logic about nested element for AbstractChannelAdapterParser
Refactor of DefaultOutboundChannelAdapterParser
Test for non-last nested chain with some outbound-channel-adapter
Improve XSD for chain-type
Manual outbound-channel-adapter ability for chain
Integration tests for all outbound-channel-adapter within <chain>
Remove redundant 'return-value-required' attribute from <stored-proc-outbound-channel-adapter>
Add support 'expectReply' for FileWritingMessageHandler

INT-2275 polishing & refactor FileOutbound*Parser

HttpRequestExecutingMessageHandlerTests polishing

INT-2275: polishing JavaDoc
2012-05-14 12:41:39 -04:00
Gary Russell
0a12a496cc INT-2485 Orderly Shutdown
Initial commit - @ManagedOperation on IMBE

- can be invoked via JMX, <control-bus/>, or getting a reference to
the IMBE from the application context.

INT-2485 Updates After Review Comments (JIRA)

* Shutdown Schedulers first, and wait for them
* Add a force parameter, which overrides thread pool shutdown options
* Shutdown Sources/Channels after all thread pools have stopped
* Mark other components as OrderlyShutdownCapable (e.g. JMS/AMQP Listener containers) and shut them down first
* Wait for remaining time to allow for quiescence

Also
* remove TimeUnit parameter (not JMX-friendly); time limit is now always milliseconds
* If thread pools don't stop in time limit, force them down.

INT-2485 Handle Self-Destruction

Add shutdown-executor to IMBE.

When the shutdown was called on a Spring-Managed thread, the shutdown
was not clean because we timed out waiting for the current thread to
terminate. After that, we force terminated other components.

Now, by providing a dedicated Executor for the shutdown process, it
is used for the shutdown instead of the current thread. This Executor
is *not* shutdown.

It is not necessary to provide an Executor if the stopActiveComponents()
method is called on some other thread that is not involved in the
shutdown.

Also adds executor name to logs, when available.

INT-2485 Polishing

Fix MBean object name collision when running all tests.

INT-2485 Enable TCP Shutdown

Make TCP connection factories 'OrderlyShutdownCapable' so
they are stopped before schedulers/executors in order for
them to release any executor threads they are holding.

INT-2485 Polishing

Didn't need DirectFieldAccessor - scheduler and executor have
an accessor for the native ExecutorService.

Copyrights

INT-2485 Polishing

schemaLocation version.

INT-2485 PR Review Polishing
2012-05-10 08:10:00 -04:00
Gary Russell
95cd202be6 INT-2536 Create 2.2 Schemas
Add 2.2 versions of module schemas.

JMX is already covered by an existing pull request.

INT-2536 Schema Check

Bump version for schema check in
AbstractIntegrationNamespaceHandler.

INT-2536 Remove Schema Versions

Some test config files had 2.1 versioned schemas.
2012-05-04 10:04:01 -04:00
Gary Russell
f75dc53ab0 INT-2431 Improve 'Dispatcher Has No Subscribers'
Add channel name to MessageDeliveryException

'Dispatcher has no subscribers'.

In a large integration flow, it can be difficult to track
down which subscribable channel has no subscribers.

This commit adds to the message text in the form

    for channel someChannelName

to the exception message. For example:

    "Dispatcher has no subscribers for channel myChannel."

Also

    for amqp-channel someAmqpChannelName
    for jms-channel someJMSChannelName
    for redis-channel someJMSChannelName

INT-2431 Polishing

Make component type and name immutable once set to avoid
channels further down the stack frame claiming ownership.

INT-2431 Polishing

* PR Comments - use a new Exception type
* Add support for Redis
* Add WARN logs for AMQP/JMS pub-sub channels

INT-2431 Polishing

PR Comments: tighten up isPubSub field in AMQP-backed channel.

INT-2431 Polishing

Ensure channel name is not 'null' or empty string.
2012-03-23 09:50:01 -04:00
Gary Russell
ef99ccde0e INT-2427 Fix Types of AMQP Outbound Endpoints
Logic for returning gateway Vs. channel-adapter was
reversed.
2012-02-13 12:14:25 -05:00
Gary Russell
f76f63f23a NT-2400 Fix tool:expected-type Classes
* MessageChannel was moved from core to the base package.
* ChannelResolver moved from core to support.
* TcpConnectionInterceptorFactoryChain was incorrect.
2012-01-13 13:21:41 -05:00
Gary Russell
b59ee8e352 INT-2369 package-info IP
INT-2360 package-info Core

INT-2361 package-info AMQP

INT-2362 package-info Event

INT-2363 package-info Feed

INT-2364 package-info File

INT-2365 INT-2380 package-info (S)FTP

INT-2366 package-info GemFire

INT-2367 package-info Groovy

INT-2368 package-info Http

INT-2378 package-info Scripting

INT-2372 package-info JMS
2012-01-05 14:42:24 -05:00
Oleg Zhurakousky
0a3718ad12 INT-2344
added documentation about mapped-request/reply-headers, change javadoc in DefaultAmqpHeaderMapper
2012-01-03 14:21:57 -05:00
Mark Fisher
267ff634ec Sonar: self-assignment 2011-12-19 16:14:35 -05:00
Oleg Zhurakousky
390bf504dd INT-2306 fixed populateUserDefinedHeaders() to account for standard heades 2011-12-15 17:28:54 -05:00
Oleg Zhurakousky
634e190f5c INT-2267
removed test compile warnings

INT-2267
removed test compile warnings(2)
2011-11-29 13:50:08 -05:00
Mark Fisher
adf93e5560 HeaderMapper refactoring
INT-2083
added outbound namespace support for XMPP header mapper

INT-2083
added inbound namespace support for XMPP header mapper

INT-2083
polished XMPP inbound/outbound header mappings, added namespace support for AMQP inbound adapter/gateway header mappings

INT-2083
added support and tests for AMQP outbound gateways and adapters

INT-2083
polishing and adding more tests for AMQP support for header mappings

INT-2083
polishing AMQP and XMPP header mappings, generalized headerMapper configuration in IntegrationNamespaceUtils.configureHeaderMapper(..) method

INT-2803
added headermapping support to WS outbound gateways

INT-2803 polishing

INT-2083
refactored SimpleWebServiceOutboundGateway, added full request/reply test

INT-2083
polished MarshallingWebServiceOutboundGateway to add marshalling callback handlers, added test for marshalling call

INT-2083
polishing based on PR comments

INT-2083 interim commit

INT-2083
added RequestReplyHeaderMapper startegy and migrated AMQP Header Mapper to use it

INT-2083
migrated WS and XMPP to use a new RequestReplyHeaderMapper strategy

INT-2083 polishing with PR comments

INT-2083 polishing
removed introspection method, simplified things

INT-2083 polishing based on recent PR comments

INT-2083 interim commit

INT-2083 polishing WS module

INT-2083
refactored to make sure that Soap action header is set within HeaderMapper

INT-2083 polishing
ensured the Soap header is set to default value if not provided

INT-2083 polishing, putting tests back
2011-11-22 17:04:27 -05:00
Mark Fisher
159e21465d Refactored AMQP channels
added namespace support

moved afterPropertiesSet call into FactoryBean
2011-11-03 13:09:56 -04:00
Gary Russell
3f02d1747d INT-2202 Add auto-startup To Inbound Endpoints
Schema and parsers did not support auto-startup; inbound channel
adapter parser did not support phase.
2011-10-31 15:38:12 -04:00
Mark Fisher
0032ad9b3f INT-2210 enable interceptors for AMQP channels 2011-10-31 10:43:03 -04:00
Mark Fisher
18f9fe6810 initial implementation of AMQP channels 2011-10-12 13:06:09 -04:00
Mark Fisher
32ae298845 using content-* props from the converter
StringUtils.hasText instead of null check
2011-10-12 10:46:48 -04:00
Mark Fisher
e99fe7ee13 asserting not null 2011-10-10 15:53:23 -04:00
Mark Fisher
4137684892 add setMessageConverter to inbound gateway 2011-10-10 15:47:39 -04:00
Mark Fisher
3c40303a3d removed xsd versions in amqp module 2011-10-10 10:56:40 -04:00
Mark Fisher
66a4f2fa42 Only require 'queue-names' if no container ref 2011-09-27 09:09:46 -04:00
Mark Fisher
cf076a832f added 'error-handler' attribute 2011-09-26 16:48:20 -04:00
Mark Fisher
83d567a3a6 fixed broken test config 2011-09-13 12:12:11 -04:00
Mark Fisher
84375120ad added 'exchange-name-expression' attributes to the schema 2011-09-09 21:00:56 +01:00
Mark Fisher
ff4a979254 added support for 'exchange-name-expression' on AMQP outbound adapters 2011-09-09 20:46:49 +01:00
Mark Fisher
dbf4c2122f changed default connection-factory value to 'rabbitConnectionFactory' to be consistent with the Spring AMQP listener-container 2011-09-09 20:36:02 +01:00
Mark Fisher
a832796d00 DefaultAmqpHeaderMapper refactoring
INT-2016, INT-2017 transient headers are no longer mapped
  INT-2090 prevent overwriting of existing headers

Most of INT-2016 is already covered by the other changes made for INT-2017.
However, it was mentioned in INT-2016 that the JsonMessageConverter was
setting a __TypeId__ header, and that header was then being overwritten
if one was present in the MessageHeaders. This change now prevents any
header value from being overwritten so that the MessageConverter or
any process that explicitly added headers to the Message would take
precedence over the HeaderMapper which may write headers subsequently.

excluding id, timestamp, error/reply channel only

updated comment issue link
2011-08-30 15:40:04 -04:00
Mark Fisher
75b0d200a6 upgrade Spring AMQP dependency to 1.0.0.RELEASE 2011-08-24 13:10:22 -04:00
Mark Fisher
cbde3470d6 id is now a fallback for a generated channel name 2011-08-22 14:40:52 -04:00
Mark Fisher
2401d7e83c inbound-gateway now supports all attributes 2011-08-19 14:36:10 -04:00
Mark Fisher
835dab4683 INT-2037 added assert for id as bean name within the context 2011-08-10 12:22:13 -04:00
Oleg Zhurakousky
62f14245cf INT-2038 added tooling support and addressed consistency in namespace prefix for AMQP module 2011-08-08 23:04:02 -04:00
Oleg Zhurakousky
37fcdbe4d7 INT-2033 added test for 'order' attribute in AMQP module 2011-08-08 18:41:20 -04:00
Mark Fisher
71f6a7278b updated MessageBuilder.copyHeadersIfAbsent with a wildcard for the Map value to be more flexible and consistent with copyHeaders 2011-08-05 14:41:46 -04:00
Mark Fisher
1a7d603f63 adding gateway-based echo sample, to be refactored into unit tests later 2011-08-05 10:22:21 -04:00
Mark Fisher
ea19a7d5a2 INT-2034 clearing the replyTo address after it has been used (i.e. it is not copied along with the reply Message itself) 2011-08-04 23:14:11 -04:00
Mark Fisher
89bef1e6f6 typos in XSD documentation 2011-08-04 18:28:42 -04:00
Mark Fisher
2f5bf21e16 INT-2019 added 'order' attribute for AMQP 'outbound-gateway' and 'outbound-channel-adapter' elements 2011-08-04 15:13:44 -04:00
Dave Syer
304e9b2abb regenerate poms for AMQP changes 2011-08-03 14:38:21 +01:00