<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>LoadGen 2007</title>
        <link>http://geekswithblogs.net/EltonStoneman/category/8700.aspx</link>
        <description>LoadGen 2007</description>
        <language>en-GB</language>
        <copyright>EltonStoneman</copyright>
        <managingEditor>elton.stoneman@gmail.com</managingEditor>
        <generator>Subtext Version 0.0.0.0</generator>
        <item>
            <title>Alternative SOAP Transport for LoadGen</title>
            <link>http://geekswithblogs.net/EltonStoneman/archive/2009/02/24/alternative-soap-transport-for-loadgen.aspx</link>
            <description>&lt;p style="text-align: center;"&gt;&lt;span style="font-size: 10pt;"&gt;[Source: &lt;a href="http://geekswithblogs.net/EltonStoneman"&gt;http://geekswithblogs.net/EltonStoneman&lt;/a&gt;] &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Using &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=C8AF583F-7044-48DB-B7B9-969072DF1689&amp;amp;displaylang=en"&gt;LoadGen 2007&lt;/a&gt; to submit messages with a complex SOAP header, I had a strange issue with the standard SOAP transport. The SOAP transport has two parameters for wrapping the input file into a SOAP envelope: &lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;&amp;lt;Parameters&amp;gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;&amp;lt;URL&amp;gt;http://x/ESB.ItineraryServices.Response/ProcessItinerary.asmx&amp;lt;/URL&amp;gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;&amp;lt;SOAPHeader&amp;gt;SOAPAction: "http://microsoft.practices.esb/Process/SubmitRequestResponse"&amp;lt;/SOAPHeader&amp;gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt; background-color: silver;"&gt;&amp;lt;SOAPPrefixEnv&amp;gt;&amp;amp;lt;?xml version=&amp;amp;quot;1.0&amp;amp;quot; …&amp;lt;/SOAPPrefixEnv&amp;gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;&lt;span style="background-color: silver;"&gt;&amp;lt;SOAPPostfixEnv&amp;gt;&amp;amp;lt;/Root&amp;amp;gt;&amp;amp;lt;/SubmitRequestResponse&amp;amp;gt…&amp;lt;/SOAPPostfixEnv&amp;gt;&lt;/span&gt; 		&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;&amp;lt;IsUseIntegratedAuth&amp;gt;False&amp;lt;/IsUseIntegratedAuth&amp;gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;&amp;lt;LatencyFileName&amp;gt;&amp;lt;/LatencyFileName&amp;gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;&amp;lt;ResponseMsgPath&amp;gt;&amp;lt;/ResponseMsgPath&amp;gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;&amp;lt;DstEncoding&amp;gt;utf-8&amp;lt;/DstEncoding&amp;gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;&amp;lt;/Parameters&amp;gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;  &lt;/p&gt;
&lt;p&gt;- note the ellipses above are for brevity and are not in the actual LoadGen config file. &lt;/p&gt;
&lt;p&gt;When the transport gets called, it opens an HTTP request and sends the SOAP envelope by writing three sets of byte arrays to the request stream: the value of &lt;em&gt;SOAPEnvPrefix&lt;/em&gt;, the contents of the input file, then the value of &lt;em&gt;SOAPEnvPostfix&lt;/em&gt;. All the byte arrays are encoded to the value specified by &lt;em&gt;DstEncoding&lt;/em&gt;. When I used this configuration to send a message it was being rejected by the endpoint as a bad request. Trapping the request with Wireshark, it looked like this: &lt;/p&gt;
&lt;p&gt;&lt;img alt="" src="http://geekswithblogs.net/images/geekswithblogs_net/EltonStoneman/022409_1832_Alternative1.png" /&gt; 	&lt;/p&gt;
&lt;p&gt;It looks as though LoadGen has injected an ellipsis before each part of the message it built – the envelope prefix, the input file contents and the envelope postfix all start with an ellipsis in which is not in the original. The request is malformed and rejected by the service. &lt;/p&gt;
&lt;p&gt;Initially I thought this was something strange in how Wireshark was showing the results and wasn't actually part of the message, so I checked further and found that the XML escapes weren't set correctly. The SOAP header is an &lt;a href="http://www.codeplex.com/esb"&gt;ESB Guidance&lt;/a&gt; itinerary which contains escaped XML for CDATA sections – to enter it as the &lt;em&gt;SOAPEnvPrefix&lt;/em&gt; parameter meant escaping the escapes, so &lt;span style="font-family: Courier New; font-size: 10pt;"&gt;&amp;amp;lt;!CDATA[]&amp;amp;gt;&lt;/span&gt; becomes &lt;span style="font-family: Courier New; font-size: 10pt;"&gt;&amp;amp;amp;lt;!CDATA[]&amp;amp;amp;gt;&lt;/span&gt; in the parameter and is rendered correctly. But the issue remained, and so did the ellipses. Copying the full request into Web Service Studio produced the same result, but cutting out the ellipses meant it processed correctly. &lt;/p&gt;
&lt;p&gt;With time accumulating on what should have been a simple task, I checked out the SOAPTransport code and could see nothing that was causing this. Debugging the call didn't show any ellipsis characters being written, and modifying it to produce a single string of the header, body and footer before encoding made no difference. In the end I created a modified transport which takes a full SOAP envelope as the input file, doing away with the envelope parameters altogether.  &lt;/p&gt;
&lt;p&gt;This worked fine, didn't render any ellipses – although the code is very similar to LoadGen's SOAPTransport class – and was happily processed. It has the advantage that you can capture a full message with Wireshark, save it and use it in LoadGen without having to extract the header. It's on the MSDN Code Gallery here: &lt;a href="http://code.msdn.microsoft.com/SixeyedSamples"&gt;Sixeyed.Samples&lt;/a&gt; (Sixeyed.Samples.LoadGen.Transports.AlternativeSOAPTransport).  &lt;/p&gt;
&lt;p&gt;Configuration is very similar to the standard transport, just specify the assembly and remove the SOAP envelope parameters: &lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;&amp;lt;Transport Name="SOAP"&amp;gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;  &amp;lt;Assembly&amp;gt;Sixeyed.Samples.dll/Sixeyed.Samples.LoadGen.Transports.AlternativeSOAPTransport&amp;lt;/Assembly&amp;gt;  &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;&amp;lt;/Transport&amp;gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;… &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;&amp;lt;Parameters&amp;gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;&amp;lt;URL&amp;gt;http://x/ESB.ItineraryServices.Response/ProcessItinerary.asmx&amp;lt;/URL&amp;gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;&amp;lt;SOAPHeader&amp;gt;SOAPAction: "http://microsoft.practices.esb/Process/SubmitRequestResponse"&amp;lt;/SOAPHeader&amp;gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;&amp;lt;IsUseIntegratedAuth&amp;gt;False&amp;lt;/IsUseIntegratedAuth&amp;gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;&amp;lt;LatencyFileName&amp;gt;&amp;lt;/LatencyFileName&amp;gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;&amp;lt;ResponseMsgPath&amp;gt;&amp;lt;/ResponseMsgPath&amp;gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;&amp;lt;DstEncoding&amp;gt;utf-8&amp;lt;/DstEncoding&amp;gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;&amp;lt;/Parameters&amp;gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;  &lt;/p&gt;
&lt;p&gt;But I'm still puzzled about those ellipses from the standard SOAP transport.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=129646"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=129646" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/EltonStoneman/aggbug/129646.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>EltonStoneman</dc:creator>
            <guid>http://geekswithblogs.net/EltonStoneman/archive/2009/02/24/alternative-soap-transport-for-loadgen.aspx</guid>
            <pubDate>Wed, 25 Feb 2009 00:33:57 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/EltonStoneman/comments/129646.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/EltonStoneman/archive/2009/02/24/alternative-soap-transport-for-loadgen.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/EltonStoneman/comments/commentRss/129646.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Implementing LoadGen.IMessageCreator to Generate Convoy Messages</title>
            <link>http://geekswithblogs.net/EltonStoneman/archive/2008/09/15/implementing-loadgen.imessagecreator-to-generate-convoy-messages.aspx</link>
            <description>&lt;p style="text-align: center;"&gt;&lt;span style="font-size: 10pt;"&gt;[Source: &lt;a href="http://geekswithblogs.net/EltonStoneman"&gt;http://geekswithblogs.net/EltonStoneman&lt;/a&gt;] &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;As part of the testing for the &lt;a href="http://geekswithblogs.net/EltonStoneman/archive/2008/09/15/dynamic-looping-convoys.aspx"&gt;Dynamic Looping Convoy solution&lt;/a&gt;, I wanted performance testing with LoadGen, which proved to need almost as much development as the BizTalk design.  &lt;/p&gt;
&lt;p&gt;The standard LoadGen message creation from templates, and even the Dynamic Message Creator wouldn't work for my case where I wanted to generate messages in related sets, all of the same type but each only populating part of the schema. So the message id would be the same for a set, but the segment number would dictate what else was populated. &lt;/p&gt;
&lt;p&gt;I ended up writing a custom IMessageCreator implementation to generate the convoy messages, which is not complex, but doesn't seem to be too well-trodden a path. Here's the class with the interface methods highlighted: &lt;/p&gt;
&lt;p&gt;&lt;img height="286" width="200" src="http://geekswithblogs.net/images/geekswithblogs_net/EltonStoneman/091508_1831_Implementin1.jpg" alt="" /&gt; 	&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;strong&gt;OptimizeFileSizeLimit&lt;/strong&gt; lets you specify when streaming comes into play for large message; in my case the message were all small so this is just a get/set of a local field; &lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;CreateNewMessage&lt;/strong&gt; is where the message generation happens. In the convoy case you need to be wary that LoadGen can operate in multiple threads, so I have static methods to return the current message id and segment number*. The method retrieves the next segment info, selectively populates a segment, and returns it to LoadGen. LoadGen expects a byte array, so the class is serialized to XML and the bytes are passed out: &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt; 			&lt;span style="color: rgb(43, 145, 175);"&gt;Message&lt;/span&gt; CreateNewMessage(&lt;span style="color: rgb(43, 145, 175);"&gt;Message&lt;/span&gt; OriginalMessage, &lt;span style="color: blue;"&gt;string&lt;/span&gt; TemplateFilePath, &lt;span style="color: blue;"&gt;string&lt;/span&gt; NewMessageUniqueFileSuffix) &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;{ &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt; 			&lt;span style="color: green;"&gt;//construct the segment: &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt; 			&lt;span style="color: rgb(43, 145, 175);"&gt;MessageSegment&lt;/span&gt; messageSegment = GetNextSegment(); &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt; 			&lt;span style="color: rgb(43, 145, 175);"&gt;IncomingSegment&lt;/span&gt; segment = &lt;span style="color: blue;"&gt;new&lt;/span&gt; 			&lt;span style="color: rgb(43, 145, 175);"&gt;IncomingSegment&lt;/span&gt;(); &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;    segment.HireId = messageSegment.MessageId; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;    segment.SegmentNumber = messageSegment.SementNumber; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt; 			&lt;span style="color: green;"&gt;//add data: &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt; 			&lt;span style="color: blue;"&gt;switch&lt;/span&gt; (segment.SegmentNumber) &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;    { &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt; 			&lt;span style="color: blue;"&gt;case&lt;/span&gt; 			&lt;span style="color: red;"&gt;1&lt;/span&gt;: &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;            segment.CustomerId = &lt;span style="color: rgb(163, 21, 21);"&gt;"CUST_X"&lt;/span&gt;; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt; 			&lt;span style="color: blue;"&gt;break&lt;/span&gt;; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt; 			&lt;span style="color: green;"&gt;//etc... &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;    } &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt; 			&lt;span style="color: green;"&gt;//retrieve XML as byte array: &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt; 			&lt;span style="color: blue;"&gt;byte&lt;/span&gt;[] buffer = &lt;span style="color: blue;"&gt;this&lt;/span&gt;.SerializeSegment(segment); &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt; 			&lt;span style="color: green;"&gt;//populate outgoing message: &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt; 			&lt;span style="color: rgb(43, 145, 175);"&gt;Message&lt;/span&gt; outgoing = &lt;span style="color: blue;"&gt;new&lt;/span&gt; 			&lt;span style="color: rgb(43, 145, 175);"&gt;Message&lt;/span&gt;(); &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;    outgoing.MessageData = buffer; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;    outgoing.MessageLength = buffer.Length; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;    outgoing.MessagePath = OriginalMessage.MessagePath; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;    outgoing.MessageExtension = OriginalMessage.MessageExtension; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;  &lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt; 			&lt;span style="color: blue;"&gt;return&lt;/span&gt; outgoing; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;} &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;* - there are issues with this in any case, as you may have the situation where the thread count is not a multiple of the expected segment count so you'll get incomplete sets generated. Useful if you want to check error handling in your BizTalk solution, but you can stick to a single LoadGen thread if not (although this has its own limitations). &lt;/p&gt;
&lt;p&gt;You get the last message created by LoadGen in the OriginalMessage parameter, which you can use to populate the path and extension of the outgoing message – note the path will be ignored in favour of the DstFilePath set in config. The complete Section in config looks like this: &lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;&lt;span style="color: blue;"&gt;  &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;Section&lt;/span&gt;&lt;span style="color: blue;"&gt; 			&lt;/span&gt;&lt;span style="color: red;"&gt;Name&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;FileSection&lt;/span&gt;"&lt;span style="color: blue;"&gt;&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;&lt;span style="color: blue;"&gt;    &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;MessageCreator&lt;/span&gt;&lt;span style="color: blue;"&gt; 			&lt;/span&gt;&lt;span style="color: red;"&gt;Mode&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;Synchronous&lt;/span&gt;"&lt;span style="color: blue;"&gt;&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;&lt;span style="color: blue;"&gt;      &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;SleepInterval&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;10&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;SleepInterval&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;&lt;span style="color: blue;"&gt;      &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;QueueLength&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;10&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;QueueLength&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-left: 36pt;"&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;Assembly&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;x.y.Test.dll/x.y.Test.LoadGen.ConvoyMessageCreator&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;Assembly&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;      &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;TemplateFilePath&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;x:\Msg100Segment1.xml&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;TemplateFilePath&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-left: 24pt;"&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;MessageCreator&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;     &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-left: 24pt;"&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;SrcFilePath&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;x:\Msg100Segment1.xml&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;SrcFilePath&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;&lt;span style="color: blue;"&gt;    &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;DstLocation&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;&lt;span style="color: blue;"&gt;      &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;Parameters&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;&lt;span style="color: blue;"&gt;        &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;DstFilePath&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;x:\x.y\Locations\SegmentReceive&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;DstFilePath&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;&lt;span style="color: blue;"&gt;      &amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;Parameters&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;&lt;span style="color: blue;"&gt;    &amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;DstLocation&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: 10pt;"&gt;&lt;span style="color: blue;"&gt;  &amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;Section&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Note that you need to specify TemplateFilePath and SrcFilePath and they need to exist, even if you don't use them. And I couldn't get Asynchronous mode to work (it would always use the source file path over the message creator config), but Synchronous runs the message creator.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=125183"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=125183" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/EltonStoneman/aggbug/125183.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>EltonStoneman</dc:creator>
            <guid>http://geekswithblogs.net/EltonStoneman/archive/2008/09/15/implementing-loadgen.imessagecreator-to-generate-convoy-messages.aspx</guid>
            <pubDate>Tue, 16 Sep 2008 00:31:46 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/EltonStoneman/comments/125183.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/EltonStoneman/archive/2008/09/15/implementing-loadgen.imessagecreator-to-generate-convoy-messages.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/EltonStoneman/comments/commentRss/125183.aspx</wfw:commentRss>
        </item>
    </channel>
</rss>