INT-3045: Add in & out ZeroMq channel adapters (#3388)
* INT-3045: Add in & out ZeroMq channel adapters JIRA: https://jira.spring.io/browse/INT-3045 * Add `ZeroMqMessageHandler` to produce messages into one-way ZeroMq sockets * Add `ZeroMqMessageProducer` to consumer messages from one-way ZeroMq sockets * Add `ConvertingBytesMessageMapper` impl for the `BytesMessageMapper` to delegate an actual conversion into the provided `MessageConverter` * Add `ZeroMqHeaders` for message headers constants representing ZeroMq message attributes * Fix `ZeroMqChannel` for the proper deferred `zeroMqProxy` evaluation * Add more JavaDocs * Fix `ZeroMqChannelTests.testPubSubBind()` to be sure that really all the subscribed channels get the same message from the `PUB` socket * * Fix typo in the `ConvertingBytesMessageMapper` * Add `this` for `doOnError()` in the `ZeroMqChannel` & `ZeroMqMessageProducer` * Change the bind logic in the `ZeroMqMessageProducer` to `port` and let it to bind to random port. The actual port is available later via `getBoundPort()` * Introduce a `ZeroMqMessageProducer.receiveRaw()` to let received `ZMsg` to be produce as a `payload` * Add a logic into `ZeroMqMessageHandler` to treat `ZMsg` in the payload of request message as is without any conversion * Fix race condition in the `ZeroMqMessageProducer` to destroy `consumerScheduler` when the main `Flux` is complete * * Add Java DSL for ZeroMq components * Extract `ReactiveMessageHandlerSpec` for `ReactiveMessageHandler` impls * Add debug message into `EmbeddedJsonHeadersMessageMapper` when cannot `decodeNativeFormat()` * Make `ReactiveMongoDbMessageHandlerSpec` extending `ReactiveMessageHandlerSpec` * Make `ZeroMqProxy` `autoStartup` by default * Add `ZeroMqDslTests` to cover all the Java DSL for ZeroMq * Introduce a `MimeTypeSerializer` to serialize a `MimeType` into JSON as a plain string; use it as extra serializer in the `JacksonJsonUtils.messagingAwareMapper()` * Fix typo for the `AllowListTypeResolverBuilder` inner class * * Add some docs * Fix Checkstyle violations * * More docs * Fix language in Docs Co-authored-by: Gary Russell <grussell@vmware.com> Co-authored-by: Gary Russell <grussell@vmware.com>
This commit is contained in:
@@ -16,8 +16,6 @@
|
||||
|
||||
package org.springframework.integration.mongodb.dsl;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.Map;
|
||||
import java.util.function.Function;
|
||||
|
||||
import org.springframework.data.mongodb.ReactiveMongoDatabaseFactory;
|
||||
@@ -27,8 +25,8 @@ import org.springframework.expression.Expression;
|
||||
import org.springframework.expression.common.LiteralExpression;
|
||||
import org.springframework.integration.dsl.ComponentsRegistration;
|
||||
import org.springframework.integration.dsl.MessageHandlerSpec;
|
||||
import org.springframework.integration.dsl.ReactiveMessageHandlerSpec;
|
||||
import org.springframework.integration.expression.FunctionExpression;
|
||||
import org.springframework.integration.handler.ReactiveMessageHandlerAdapter;
|
||||
import org.springframework.integration.mongodb.outbound.ReactiveMongoDbStoringMessageHandler;
|
||||
import org.springframework.messaging.Message;
|
||||
|
||||
@@ -41,22 +39,15 @@ import org.springframework.messaging.Message;
|
||||
* @since 5.3
|
||||
*/
|
||||
public class ReactiveMongoDbMessageHandlerSpec
|
||||
extends MessageHandlerSpec<ReactiveMongoDbMessageHandlerSpec, ReactiveMessageHandlerAdapter>
|
||||
extends ReactiveMessageHandlerSpec<ReactiveMongoDbMessageHandlerSpec, ReactiveMongoDbStoringMessageHandler>
|
||||
implements ComponentsRegistration {
|
||||
|
||||
protected final ReactiveMongoDbStoringMessageHandler messageHandler; // NOSONAR - final
|
||||
|
||||
protected ReactiveMongoDbMessageHandlerSpec(ReactiveMongoDatabaseFactory mongoDbFactory) {
|
||||
this(new ReactiveMongoDbStoringMessageHandler(mongoDbFactory));
|
||||
super(new ReactiveMongoDbStoringMessageHandler(mongoDbFactory));
|
||||
}
|
||||
|
||||
protected ReactiveMongoDbMessageHandlerSpec(ReactiveMongoOperations reactiveMongoOperations) {
|
||||
this(new ReactiveMongoDbStoringMessageHandler(reactiveMongoOperations));
|
||||
}
|
||||
|
||||
private ReactiveMongoDbMessageHandlerSpec(ReactiveMongoDbStoringMessageHandler messageHandler) {
|
||||
this.messageHandler = messageHandler;
|
||||
this.target = new ReactiveMessageHandlerAdapter(this.messageHandler);
|
||||
super(new ReactiveMongoDbStoringMessageHandler(reactiveMongoOperations));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -65,7 +56,7 @@ public class ReactiveMongoDbMessageHandlerSpec
|
||||
* @return the spec
|
||||
*/
|
||||
public ReactiveMongoDbMessageHandlerSpec mongoConverter(MongoConverter mongoConverter) {
|
||||
this.messageHandler.setMongoConverter(mongoConverter);
|
||||
this.reactiveMessageHandler.setMongoConverter(mongoConverter);
|
||||
return this;
|
||||
}
|
||||
|
||||
@@ -96,13 +87,8 @@ public class ReactiveMongoDbMessageHandlerSpec
|
||||
* @return the spec
|
||||
*/
|
||||
public ReactiveMongoDbMessageHandlerSpec collectionNameExpression(Expression collectionNameExpression) {
|
||||
this.messageHandler.setCollectionNameExpression(collectionNameExpression);
|
||||
this.reactiveMessageHandler.setCollectionNameExpression(collectionNameExpression);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<Object, String> getComponentsToRegister() {
|
||||
return Collections.singletonMap(this.messageHandler, null);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user