Document Message
- Symbol für Entwurfsmuster Document Message (Dokumentnachricht)
Document Message (von englisch document ‚Dokument‘ und message ‚Nachricht‘) ist ein Entwurfsmuster in der Softwarearchitektur und -entwicklung aus der Kategorie Nachrichtenerzeugung im Werk Enterprise Integration Patterns von Gregor Hohpe und Bobby Woolf.[1]
Anforderung
Eine Anwendung möchte Daten an eine andere übermitteln. Sie könnte das mit einem Dateitransfer oder einer gemeinsamen Datenbank bewerkstelligen. Diese Ansätze haben allerdings ihre Defizite. Die Übertragung funktionierte mit einer Nachrichtenübermittlung möglicherweise besser.
Frage
Wie kann Nachrichtenübermittlung genutzt werden, um Informationen und Daten zwischen zwei Anwendungen zu übertragen?
Antwort
Eine Datenstruktur kann mit einer Dokumentnachricht (Document Message) zuverlässig zwischen Anwendungen übertragen werden.
Verwendungsbeispiel
Im folgenden Beispiel in Java wird die DSL von Apache Camel[2] verwendet, das auf den Enterprise Integration Patterns basiert.[3]
package org.wikipedia.de.eip.message.construction; import static java.lang.System.out; import javax.swing.text.BadLocationException; import javax.swing.text.PlainDocument; import javax.swing.text.StringContent; import org.apache.camel.Message; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.impl.DefaultCamelContext; class DocumentMessageSample { private static DefaultCamelContext cc = new DefaultCamelContext(); public static void main( final String... args ) throws Exception { final StringContent text = new StringContent(); text.insertString( 0, "**** containing document content ****" ); final PlainDocument doc = new PlainDocument( text ); // EIP Document cc.setName( "DocumentMessageSample" ); cc.addRoutes( new RouteBuilder() { @Override public void configure() { from( "timer:start?repeatCount=1" ) .process().message( m -> m.setBody( doc ) ) .process().message( m -> print( "Sending Document", m ) ) .log( "Sending..." ) .to( "direct:receive" ) // EIP Sender .setId( "Sender" ); from( "direct:receive" ) // EIP Receiver .log( "Receiving..." ) .process().message( m -> print( "Receiving Document", m ) ) .setId( "Receiver" ); } } ); cc.start(); Thread.sleep( 2000 ); cc.stop(); cc.close(); } // main() static void print( final String process, final Message m ) { try { out.printf( "%s %s: %s%n", process, m, ((PlainDocument) m.getBody()).getText( 0, 37 ) ); // EIP Document packed in Message } catch ( final BadLocationException e ) { e.printStackTrace(); } } // print() } // DocumentMessageSample
Ausgabe
... Sending Document Message: **** containing document content **** [ple) thread #1 - timer://start] send INFO Sending... [ple) thread #1 - timer://start] receive INFO Receiving... Receiving Document Message: **** containing document content **** ...
Verwandte Muster
Andere Muster aus der Kategorie Nachrichtenerzeugung (Message Construction) sind Message, Command Message, Event Message, Request-Reply, Return Address, Correlation Identifier, Message Sequence, Message Expiration und Format Indicator.
Literatur
- Gregor Hohpe, Bobby Woolf: Enterprise Integration Patterns. Designing, Building and Deploying Messaging Solutions. Hrsg.: Addison-Wesley. 1. Auflage. Addison-Wesley, 2003, ISBN 978-0-321-20068-6 (englisch, 480 S.).
Weblinks
- Gregor Hohpe, Bobby Woolf: Document Message. Messaging Patterns → Message Construction. In: Enterprise Integration Patterns. Gregor Hohpe, Bobby Woolf, abgerufen am 6. Dezember 2020 (englisch).
Einzelnachweise
- ↑ Gregor Hohpe, Bobby Woolf: Enterprise Integration Patterns. Designing, Building and Deploying Messaging Solutions. Hrsg.: Addison-Wesley. 1. Auflage. Addison-Wesley, 2003, ISBN 978-0-321-20068-6, S. 143–145 (englisch, 480 S.).
- ↑ N.N.: Java DSL. In: Apache Camel User Manual. Apache Software Foundation, abgerufen am 6. Dezember 2020 (englisch).
- ↑ N.N.: Enterprise Integration Patterns. In: Apache Camel User Manual. Apache Software Foundation, abgerufen am 14. Dezember 2020 (englisch).
Erzeugungsmuster | Abstrakte Fabrik | Erbauer | Fabrikmethode | Prototyp | Singleton | Multiton | Objektpool |
Strukturmuster | Adapter | Brücke | Decorator | Fassade | Fliegengewicht | Kompositum | Stellvertreter |
Verhaltensmuster | Beobachter | Besucher | Interpreter | Iterator | Kommando | Memento | Schablonenmethode | Strategie | Vermittler | Zustand | Zuständigkeitskette | Interceptor | Nullobjekt | Protokollstapel |
Muster für objektrelationale Abbildung | Datentransferobjekt | Table Data Gateway | Row Data Gateway | Active Record | Unit of Work | Identity Map | Lazy Loading | Identity Field | Dependent Mapping | Embedded Value | Serialized LOB | Inheritance Mapper | Metadata Mapping | Query Object | Command-Query-Responsibility-Segregation |
Nachrichtenübermittlungsmuster | Message | Command Message | Document Message | Event Message | Request-Reply | Return Address | Correlation Identifier | Message Sequence | Message Expiration | Format Indicator | Message Channel | Point-to-Point Channel | Publisher-Subscriber Channel | Datatype Channel | Invalid Message Channel | Dead Letter Channel | Guaranteed Delivery | Channel Adapter | Messaging Bridge | Message Bus | Pipes-and-Filters | Message Router | Content-based Router | Message Filter | Dynamic Router | Recipient List | Splitter | Aggregator | Resequencer | Composed Message Processor | Scatter-Gather | Routing Slip | Process Manager | Message Broker | Message Translator | Envelope Wrapper | Content Enricher | Content Filter | Claim Check | Normalizer | Canonical Data Model | Message Endpoint | Messaging Gateway | Messaging Mapper | Transactional Client | Polling Consumer | Event-driven Consumer | Competing Consumers | Message Dispatcher | Selective Consumer | Durable Subscriber | Idempotent Receiver | Service Activator | Control Bus | Detour | Wire Tap | Message History | Message Store | Smart Proxy | Test Message | Channel Purger |
Andere | Application Controller | Business Delegate | Data Access Object | Dependency Injection | Extension Interface | Fluent Interface | Inversion of Control (IoC) | Lock | Model View Controller (MVC) | Model View Presenter (MVP) | Model View Update (MVU) | Model View ViewModel (MVVM) | Page Controller | Registry | Remote Facade | Repository | Service Locator | Session State | Table Module | Template View | Threadpool | Transaction Script | Transform View | Two-Step View | Value Object |