<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments for David Boike&#039;s Blog</title>
	<atom:link href="http://www.make-awesome.com/comments/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.make-awesome.com</link>
	<description>Build. Optimize. Make Awesome.</description>
	<lastBuildDate>Wed, 15 Feb 2012 15:42:00 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2</generator>
	<item>
		<title>Comment on OMG the DVR died! by Bubba</title>
		<link>http://www.make-awesome.com/2010/11/omg-the-dvr-died/comment-page-1/#comment-5445</link>
		<dc:creator>Bubba</dc:creator>
		<pubDate>Wed, 15 Feb 2012 15:42:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.make-awesome.com/?p=299#comment-5445</guid>
		<description>I have a vip 722 and WOW that thing is noisy.   Thats like the noiseiest electronic device save maybe a full fledged PC running.</description>
		<content:encoded><![CDATA[<p><!-- google_ad_section_start --><br />
I have a vip 722 and WOW that thing is noisy.   Thats like the noiseiest electronic device save maybe a full fledged PC running.<!-- google_ad_section_end --></p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on OMG the DVR died! by AprilMMccoy</title>
		<link>http://www.make-awesome.com/2010/11/omg-the-dvr-died/comment-page-1/#comment-5444</link>
		<dc:creator>AprilMMccoy</dc:creator>
		<pubDate>Wed, 15 Feb 2012 00:12:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.make-awesome.com/?p=299#comment-5444</guid>
		<description>things like it are very sensitive thats why anybody owning them should be aware that it is very sensistive and they should be careful on moving them.</description>
		<content:encoded><![CDATA[<p><!-- google_ad_section_start --><br />
things like it are very sensitive thats why anybody owning them should be aware that it is very sensistive and they should be careful on moving them.<!-- google_ad_section_end --></p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Injecting NServiceBus into ASP.NET MVC 3 by Jason Aminto</title>
		<link>http://www.make-awesome.com/2011/02/injecting-nservicebus-into-asp-net-mvc-3/comment-page-1/#comment-5443</link>
		<dc:creator>Jason Aminto</dc:creator>
		<pubDate>Thu, 02 Feb 2012 16:39:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.make-awesome.com/?p=341#comment-5443</guid>
		<description>Good stuff...Do you have an example of how to configure NServiceBus when unit testing your controller?  I can&#039;t seem to get the configuration resolved between Test.Initialize and the config you&#039;ve mentioned in the article.

Thanks!</description>
		<content:encoded><![CDATA[<p><!-- google_ad_section_start --><br />
Good stuff&#8230;Do you have an example of how to configure NServiceBus when unit testing your controller?  I can&#8217;t seem to get the configuration resolved between Test.Initialize and the config you&#8217;ve mentioned in the article.</p>
<p>Thanks!<!-- google_ad_section_end --></p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Deploying NServiceBus in a Windows Failover Cluster by Alex Yeo</title>
		<link>http://www.make-awesome.com/2010/10/deploying-nservicebus-in-a-windows-failover-cluster/comment-page-1/#comment-5442</link>
		<dc:creator>Alex Yeo</dc:creator>
		<pubDate>Thu, 26 Jan 2012 16:44:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.make-awesome.com/?p=250#comment-5442</guid>
		<description>David - great post on the clustered failover for the distributors! Can the same setup be used to subscribe and process messages from other publishing sources?</description>
		<content:encoded><![CDATA[<p><!-- google_ad_section_start --><br />
David &#8211; great post on the clustered failover for the distributors! Can the same setup be used to subscribe and process messages from other publishing sources?<!-- google_ad_section_end --></p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Batch or Partition a collection with LINQ by David Boike</title>
		<link>http://www.make-awesome.com/2010/08/batch-or-partition-a-collection-with-linq/comment-page-1/#comment-5441</link>
		<dc:creator>David Boike</dc:creator>
		<pubDate>Thu, 19 Jan 2012 15:31:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.make-awesome.com/?p=224#comment-5441</guid>
		<description>@Mike, adding ToList() will cause the entire enumeration to evaluate.  If it contains millions of records, you&#039;re going to have a performance problem - you may even run out of memory.

@Guillaume, the same problem exists with using .Count() on the source - the enumeration will need to evaluate all the way to the end to get to the count, which will degrade performance as your enumeration size starts to increase.</description>
		<content:encoded><![CDATA[<p><!-- google_ad_section_start --><br />
@Mike, adding ToList() will cause the entire enumeration to evaluate.  If it contains millions of records, you&#8217;re going to have a performance problem &#8211; you may even run out of memory.</p>
<p>@Guillaume, the same problem exists with using .Count() on the source &#8211; the enumeration will need to evaluate all the way to the end to get to the count, which will degrade performance as your enumeration size starts to increase.<!-- google_ad_section_end --></p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Batch or Partition a collection with LINQ by Guillaume Lecomte</title>
		<link>http://www.make-awesome.com/2010/08/batch-or-partition-a-collection-with-linq/comment-page-1/#comment-5440</link>
		<dc:creator>Guillaume Lecomte</dc:creator>
		<pubDate>Thu, 19 Jan 2012 14:58:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.make-awesome.com/?p=224#comment-5440</guid>
		<description>I did the same thing with LINQ:


        public static IEnumerable&lt;IQueryable&gt; Chunk(this IQueryable source, int chunkSize)
        {
            var index = 0;
            var count = source.Count();
            while (index &lt; count)
            {
                yield return source.Skip(index).Take(chunkSize);
                index += chunkSize;
            }
        }</description>
		<content:encoded><![CDATA[<p><!-- google_ad_section_start --><br />
I did the same thing with LINQ:</p>
<p>        public static IEnumerable&lt;IQueryable&gt; Chunk(this IQueryable source, int chunkSize)<br />
        {<br />
            var index = 0;<br />
            var count = source.Count();<br />
            while (index &lt; count)<br />
            {<br />
                yield return source.Skip(index).Take(chunkSize);<br />
                index += chunkSize;<br />
            }<br />
        }<!-- google_ad_section_end --></p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Batch or Partition a collection with LINQ by Mike Brown</title>
		<link>http://www.make-awesome.com/2010/08/batch-or-partition-a-collection-with-linq/comment-page-1/#comment-5439</link>
		<dc:creator>Mike Brown</dc:creator>
		<pubDate>Thu, 12 Jan 2012 18:26:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.make-awesome.com/?p=224#comment-5439</guid>
		<description>You could use the first sample all you need to do is add a ToList() to remaining.Skip(batchSize)
Without the ToList call remaining is still the same original Enumerable...you&#039;re just chaining the Skip operators so that by the fifh iteration remaining == collection.Skip(batchSize).Skip(batchSize).Skip(batchSize).Skip(batchSize).Skip(batchSize).

Your second sample imperatively does the ToList().</description>
		<content:encoded><![CDATA[<p><!-- google_ad_section_start --><br />
You could use the first sample all you need to do is add a ToList() to remaining.Skip(batchSize)<br />
Without the ToList call remaining is still the same original Enumerable&#8230;you&#8217;re just chaining the Skip operators so that by the fifh iteration remaining == collection.Skip(batchSize).Skip(batchSize).Skip(batchSize).Skip(batchSize).Skip(batchSize).</p>
<p>Your second sample imperatively does the ToList().<!-- google_ad_section_end --></p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Wanted: C# Property Initializers by Sean Kearon</title>
		<link>http://www.make-awesome.com/2012/01/wanted-c-property-initializers/comment-page-1/#comment-5438</link>
		<dc:creator>Sean Kearon</dc:creator>
		<pubDate>Wed, 11 Jan 2012 14:50:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.make-awesome.com/2012/01/wanted-c-property-initializers/#comment-5438</guid>
		<description>+1</description>
		<content:encoded><![CDATA[<p><!-- google_ad_section_start --><br />
+1<!-- google_ad_section_end --></p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Wanted: C# Property Initializers by Yves Reynhout</title>
		<link>http://www.make-awesome.com/2012/01/wanted-c-property-initializers/comment-page-1/#comment-5437</link>
		<dc:creator>Yves Reynhout</dc:creator>
		<pubDate>Wed, 11 Jan 2012 14:38:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.make-awesome.com/2012/01/wanted-c-property-initializers/#comment-5437</guid>
		<description>Why not use a builder? e.g. New.YourMessage.Build();
public static class New {
  public static YourMessageBuilder YourMessage { get {
    return new YourMessageBuilder().WithMyString(&quot;initial value&quot;).WithMyList(new List()); 
  } }
}
More details of how I&#039;ve dealt with this can be found here: http://seabites.wordpress.com/2011/08/17/message-contract-dsl/

If you don&#039;t want to use builders you could still have a New.YourMessage return an initialized message.</description>
		<content:encoded><![CDATA[<p><!-- google_ad_section_start --><br />
Why not use a builder? e.g. New.YourMessage.Build();<br />
public static class New {<br />
  public static YourMessageBuilder YourMessage { get {<br />
    return new YourMessageBuilder().WithMyString(&#8220;initial value&#8221;).WithMyList(new List());<br />
  } }<br />
}<br />
More details of how I&#8217;ve dealt with this can be found here: <a href="http://seabites.wordpress.com/2011/08/17/message-contract-dsl/" rel="nofollow">http://seabites.wordpress.com/2011/08/17/message-contract-dsl/</a></p>
<p>If you don&#8217;t want to use builders you could still have a New.YourMessage return an initialized message.<!-- google_ad_section_end --></p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Robust 3rd Party Integrations with NServiceBus by David Boike</title>
		<link>http://www.make-awesome.com/2011/11/robust-3rd-party-integrations-with-nservicebus/comment-page-1/#comment-5436</link>
		<dc:creator>David Boike</dc:creator>
		<pubDate>Tue, 10 Jan 2012 03:34:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.make-awesome.com/?p=437#comment-5436</guid>
		<description>@Tezler - I meant to reply to this long ago and I apologize. My wife and I had a baby and so I suppose these things happen.

#1 - yes, subscribers will receive all messages and it is just fine for them to decide they aren&#039;t interested in particular messages based on the content.  That is their right, and the publisher doesn&#039;t have to know about it (since it doesn&#039;t really know or care about the subscribers at all).

#2 - Sagas do solve the duplciate message issue if implemented correctly.  The first message received successfully by the web service (whether or not the remote sender is aware of the success or not) will flow through the saga and be published. Any additional web service hits with the same ServiceTransactionIdentifier will be swallowed up by the Saga, because the Saga will look up the Saga Data (based on that identifier), see that the LastSeen property of the Saga Data was not equal to DateTime.MinValue, and then take no action (i.e. not publish a follow-up event.)

#3 - If the third party wants notification when EVERYTHING is done on your side, that really breaks the ideal disconnected, eventually consistent nature of the distributed system. This probably comes from their distrust of anything they can&#039;t directly see. I would attempt to push back on this requirement, on the grounds that it is expensive to implement, due to the extra coupling created between your organizations that must be maintained long-term, with very little added REAL value, assuming you live up to your end of the bargain and process what you promise to process.

That said, if you MUST do it, here are a few suggestions:

#3a: Each subscribing endpoint individually updates a database record regarding their progress, and the third-party organization could be given a window to this via a read-only web service or REST API.

#3b: While you can&#039;t have each subscribing endpoint publish the same event to indicate completion (events are published by only one logical subscriber) each one could perhaps do a Bus.Reply(), which would send messages back to the Saga, which could take appropriate actions, including access the original saga data. Take care when doing this, however, not to make the Saga really aware of the subscribers, as creating that coupling would be counter-productive.
</description>
		<content:encoded><![CDATA[<p><!-- google_ad_section_start --><br />
@Tezler &#8211; I meant to reply to this long ago and I apologize. My wife and I had a baby and so I suppose these things happen.</p>
<p>#1 &#8211; yes, subscribers will receive all messages and it is just fine for them to decide they aren&#8217;t interested in particular messages based on the content.  That is their right, and the publisher doesn&#8217;t have to know about it (since it doesn&#8217;t really know or care about the subscribers at all).</p>
<p>#2 &#8211; Sagas do solve the duplciate message issue if implemented correctly.  The first message received successfully by the web service (whether or not the remote sender is aware of the success or not) will flow through the saga and be published. Any additional web service hits with the same ServiceTransactionIdentifier will be swallowed up by the Saga, because the Saga will look up the Saga Data (based on that identifier), see that the LastSeen property of the Saga Data was not equal to DateTime.MinValue, and then take no action (i.e. not publish a follow-up event.)</p>
<p>#3 &#8211; If the third party wants notification when EVERYTHING is done on your side, that really breaks the ideal disconnected, eventually consistent nature of the distributed system. This probably comes from their distrust of anything they can&#8217;t directly see. I would attempt to push back on this requirement, on the grounds that it is expensive to implement, due to the extra coupling created between your organizations that must be maintained long-term, with very little added REAL value, assuming you live up to your end of the bargain and process what you promise to process.</p>
<p>That said, if you MUST do it, here are a few suggestions:</p>
<p>#3a: Each subscribing endpoint individually updates a database record regarding their progress, and the third-party organization could be given a window to this via a read-only web service or REST API.</p>
<p>#3b: While you can&#8217;t have each subscribing endpoint publish the same event to indicate completion (events are published by only one logical subscriber) each one could perhaps do a Bus.Reply(), which would send messages back to the Saga, which could take appropriate actions, including access the original saga data. Take care when doing this, however, not to make the Saga really aware of the subscribers, as creating that coupling would be counter-productive.<!-- google_ad_section_end --></p>
]]></content:encoded>
	</item>
</channel>
</rss>

