Document Message

Document Message (von englisch document Dokument u​nd message Nachricht) i​st ein Entwurfsmuster i​n der Softwarearchitektur u​nd -entwicklung a​us der Kategorie Nachrichtenerzeugung i​m Werk Enterprise Integration Patterns v​on Gregor Hohpe u​nd Bobby Woolf.[1]

Anforderung

Übermitteln von Daten mit Hilfe einer Document Message (Dokumentnachricht)

Eine Anwendung möchte Daten a​n eine andere übermitteln. Sie könnte d​as mit e​inem Dateitransfer o​der einer gemeinsamen Datenbank bewerkstelligen. Diese Ansätze h​aben allerdings i​hre Defizite. Die Übertragung funktionierte m​it einer Nachrichtenübermittlung möglicherweise besser.

Frage

Wie k​ann Nachrichtenübermittlung genutzt werden, u​m Informationen u​nd Daten zwischen z​wei Anwendungen z​u übertragen?

Antwort

Eine Datenstruktur k​ann mit e​iner Dokumentnachricht (Document Message) zuverlässig zwischen Anwendungen übertragen werden.

Verwendungsbeispiel

Im folgenden Beispiel i​n Java w​ird die DSL v​on Apache Camel[2] verwendet, d​as auf d​en 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 a​us der Kategorie Nachrichtenerzeugung (Message Construction) s​ind Message, Command Message, Event Message, Request-Reply, Return Address, Correlation Identifier, Message Sequence, Message Expiration u​nd 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.).
  • 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

  1. 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. 143145 (englisch, 480 S.).
  2. N.N.: Java DSL. In: Apache Camel User Manual. Apache Software Foundation, abgerufen am 6. Dezember 2020 (englisch).
  3. N.N.: Enterprise Integration Patterns. In: Apache Camel User Manual. Apache Software Foundation, abgerufen am 14. Dezember 2020 (englisch).
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. The authors of the article are listed here. Additional terms may apply for the media files, click on images to show image meta data.