<turbo-stream action="append" target="posts_list"><template>    <div class="postbit" id="164160" data-post-id="164160">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="sorentwo" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/sorentwo/120/37360_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  sorentwo
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Oban Core Team</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="jc00ke" data-post="191" data-topic="22449">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/jc00ke/48/18365_2.png" class="avatar"> jc00ke:</div>
<blockquote>
<p>Are there specific things you find confusing that we could help you, and others, understand?</p>
</blockquote>
</aside>
<p>Absolutely, if you are confused or need clearer examples let us/me know! The project always needs doc improvements and I’m working on proper guides.</p>
<p>Rate limiting keeps coming up, it’s definitely on the feature roadmap.</p>
<aside class="quote no-group" data-username="anthonator" data-post="192" data-topic="22449">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/anthonator/48/14467_2.png" class="avatar"> anthonator:</div>
<blockquote>
<p>Is there any sort of way to make <code>assert_enqueued</code> act like <code>assert_receive</code> ? Or is there some sort of monitor I can subscribe a test process to so I can get notified when a job gets enqueued before using <code>assert_enqueued</code> ?</p>
</blockquote>
</aside>
<p>There isn’t any monitoring/pubsub that makes this possible currently. There <em>are</em> PostgreSQL pubsub notifications for inserted jobs, but they don’t work in the sandbox environment. The sandbox uses transactions for isolation and pubsub notifications aren’t emitted until a transaction commits.</p>
<p>Would you mind opening an issue/feature request? This is definitely something I’ve encountered before and I’ve resorted to polling. Additional telemetry events (which has an open issue) would make this easy to support without polling as well.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="164160" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/oban-reliable-and-observable-job-processing/22449/193">Post #192</a>
	                </div>
	            </div>
              <div id="likers-container-164160" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="164160"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #192"></div>
  </section>
</div>
    <div class="postbit" id="164832" data-post-id="164832">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="smolcatgirl" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  smolcatgirl
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Hi, thanks for you reply.</p>
<p>Something that I would like to do is to do work with some entries in a files table in the database. Some types of work are dependent on other types of work. If something fails for one file I would like to be able say “oh then dont start the other work just yet. Instead retry this 2 times with a hour interval first or so. if those fails too then dont continue doing work with this file.” However the work should still be done  for the other files. All jobs should be logged and accessible from web admin ui.</p>
<p>What I had trouble understanding was mostly the terms used in the docs eg queues and wokers. I made a simple ennvironment and used this guide to setup up test work. I think I undestand better now. <a href="https://elixircasts.io/job-processing-with-oban" class="inline-onebox" rel="noopener nofollow ugc">Job Processing with Oban - ElixirCasts</a></p>
<p>Thanks for your time</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="164832" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/oban-reliable-and-observable-job-processing/22449/194">Post #193</a>
	                </div>
	            </div>
              <div id="likers-container-164832" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="164832"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #193"></div>
  </section>
</div>
    <div class="postbit" id="164837" data-post-id="164837">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="al2o3cr" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/al2o3cr/120/3457_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  al2o3cr
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="smolcatgirl" data-post="185" data-topic="22449">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/letter_avatar_proxy/v4/letter/s/c5a1d2/48.png" class="avatar"> smolcatgirl:</div>
<blockquote>
<p>Is there any to make some kinda interval so that if I have some jobs related to this api and some not, then the there will be always be 4 seconds between each job with calls to this api and the worker could run other jobs meanwhile.</p>
</blockquote>
</aside>
<p>Not quite what you wanted in the last point (it blocks the worker while waiting) but one option would be a separate “rate limiter” GenServer. It exposes one public function, <code>RateLimiter.get_token</code> with the following behavior:</p>
<ul>
<li>
<p>if <code>get_token</code> has never been called before, record the current time in the state and reply with <code>:ok</code> immediately</p>
</li>
<li>
<p>if <code>get_token</code> has been called but the last time was more than 4 seconds ago, record the current time in the state and reply with <code>:ok</code> immediately</p>
</li>
<li>
<p>if <code>get_token</code> was called more recently than that, use <code>Process.send_after</code> to schedule a future message. Don’t reply at <em>all</em>, leaving the caller of <code>get_token</code> blocked waiting for a reply. When the future message arrives, reply to the original caller with <code>:ok</code>.</p>
</li>
</ul>
<p>The overall effect of this is to create a function that returns <code>:ok</code> immediately <em>unless</em> it’s called more often than once every 4s; in that case, it makes the caller wait.</p>
<p>This approach can be extended to handling separate per-user rate limits by keeping a map <code>user_id =&gt; last_call_time</code> in the GenServer instead of a single timestamp.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="164837" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/oban-reliable-and-observable-job-processing/22449/195">Post #194</a>
	                </div>
	            </div>
              <div id="likers-container-164837" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="164837"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #194"></div>
  </section>
</div>
    <div class="postbit" id="164943" data-post-id="164943">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="smolcatgirl" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  smolcatgirl
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Either way I would need to wait until all the first work with all the files is done or I would need to wait until the work with the processed file is done. In the latter approach the the each  processed file would be processed in its own pace and when some work with it is done, then move on to the next work to do for that file, while the system continues to do the first work with the other files. I would prefer if I could do  the latter because that way my system could work with other things while the failed files wait for a retry.  Any ideas how to do smth like any of those approaches with Oban?</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="164943" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/oban-reliable-and-observable-job-processing/22449/196">Post #195</a>
	                </div>
	            </div>
              <div id="likers-container-164943" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="164943"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #195"></div>
  </section>
</div>
    <div class="postbit" id="164944" data-post-id="164944">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="benwilson512" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/benwilson512/120/1457_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  benwilson512
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Author of Craft GraphQL APIs in Elixir with Absinthe</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I think you should have a dedicated table that describes the amount of processing that has happened so far, and how much remains. Then enqueue just one job at the start, when it is done it updates your status row, and enqueues the next job. Relying on the presence or absence of future Oban jobs is going to perform more poorly, and won’t let you capture the nuance of your domain.</p>
<p>This question and some like it I think end up trying to have the job row represent “the state of processing as understood by my business domain on some business entity”, but I think this is a mistaken view of what Oban should be about. Oban’s job is to manage programmatic units of work that need to occur asynchronously. What the success or failure of those units of work implies about the status of some domain entity needs to be captured in your domain data, not by Oban.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="164944" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/oban-reliable-and-observable-job-processing/22449/197">Post #196</a>
	                </div>
	            </div>
              <div id="likers-container-164944" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="164944"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #196"></div>
  </section>
</div>
    <div class="postbit" id="164952" data-post-id="164952">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="smolcatgirl" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  smolcatgirl
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Thanks, I will consider this. I think I have a better understanding of this now.</p>
<p>edit: how would I await for the work to be done? Should I do a request to a db every 30 or so seconds to check if I the work has been inserted? I  would  be thankful for any help! <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="164952" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/oban-reliable-and-observable-job-processing/22449/198">Post #197</a>
	                </div>
	            </div>
              <div id="likers-container-164952" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="164952"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #197"></div>
  </section>
</div>
    <div class="postbit" id="165104" data-post-id="165104">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="jaimeiniesta" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/jaimeiniesta/120/1063_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  jaimeiniesta
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I’ve found that <code>scheduled_at</code> in Oban is a great solution if you combine with some job planning of your own. For example in my app I let users enqueue a lot of jobs and specify a rate limit. So, I can calculate the exact time I want each job to be run, given the initial time (current time) and adding the ellapsed time to it. For example if they want one job every 4 seconds, the first one will be <code>scheduled_at</code> now, the second one at “now + 4 seconds”, the third one at “now + 4 + 4 seconds” and so on. I store the last timestamp in Redis but you could use any other cache, DB, an ets table, a genserver…</p>
<p>Another approach that you can also use is a rate limiter like ExHammer, and making the jobs re-enqueue themselves if they’re rate limited, or just wait until it’s their time. In fact I use both solutions, job planning and rate limiting.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="165104" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/oban-reliable-and-observable-job-processing/22449/199">Post #198</a>
	                </div>
	            </div>
              <div id="likers-container-165104" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="165104"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #198"></div>
  </section>
</div>
    <div class="postbit" id="165332" data-post-id="165332">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="smolcatgirl" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  smolcatgirl
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Hi, is there some way to mark a job as diascard from inside the job? Like if oban job could encounter temporary problem and also permanent issues,  then I want to mark it as failed if it encountes permanent problem at the first time.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="165332" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/oban-reliable-and-observable-job-processing/22449/200">Post #199</a>
	                </div>
	            </div>
              <div id="likers-container-165332" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="165332"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #199"></div>
  </section>
</div>
    <div class="postbit" id="165352" data-post-id="165352">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="sorentwo" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/sorentwo/120/37360_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  sorentwo
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Oban Core Team</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>There isn’t currently a way to indicate that a job should be discarded instead of retried if it encounters a permanent problem. Coincidentally <a class="mention" href="/u/chulkilee" rel="nofollow">@chulkilee</a> was asking about this in the <a class="hashtag-cooked" href="/tag/oban/1833" data-type="tag" data-slug="oban" data-id="1833" data-style-type="icon" data-icon="tag" rel="nofollow"><span class="hashtag-icon-placeholder"><svg class="fa d-icon d-icon-square-full svg-icon svg-node"><use href="#square-full"></use></svg></span><span>oban</span></a> Slack channel just yesterday.</p>
<p>For now, you can “fake” it and have the job stop retrying by returning a successful value like <code>:ok</code>, or <code>{:ok, :ignored}</code>.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="165352" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/oban-reliable-and-observable-job-processing/22449/201">Post #200</a>
	                </div>
	            </div>
              <div id="likers-container-165352" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="165352"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #200"></div>
  </section>
</div>
    <div class="postbit" id="165999" data-post-id="165999">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="sorentwo" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/sorentwo/120/37360_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  sorentwo
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Oban Core Team</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Oban v1.2.0 is out today!</p>
<p>This has a helpful bugfix to unblock queues after killing jobs, as well as a few requested features. The most exciting addition is a new telemetry event, <code>[:oban, :started]</code>, which is emitted when a job starts. Between the <code>:started</code> and <code>:success | :failure</code> events it is now possible to do tracing spans for oban workers. This is very helpful if you use a tool like NewRelic or AppSignal and want complete traces of worker activity.</p>
<p>From the <a href="https://github.com/sorentwo/oban/blob/master/CHANGELOG.md#120--2020-03-05" rel="noopener nofollow ugc">CHANGELOG</a>:</p>
<h3><a name="p-165999-added-1" class="anchor" href="#p-165999-added-1" aria-label="Heading link" rel="nofollow"></a>Added</h3>
<ul>
<li>
<p>[Oban.Testing] Add <a href="https://hexdocs.pm/oban/Oban.Testing.html#assert_enqueued/3" rel="noopener nofollow ugc">assert_enqueued/2</a> and <a href="https://hexdocs.pm/oban/Oban.Testing.html#assert_enqueued/3" rel="noopener nofollow ugc">refute_enqueued/2</a> to allow asserting with a timeout, like <code>assert_received</code>. <a class="mention" href="/u/anthonator" rel="nofollow">@anthonator</a></p>
</li>
<li>
<p>[Oban.Telemetry] Add <a href="https://hexdocs.pm/oban/Oban.Testing.html#assert_enqueued/3" rel="noopener nofollow ugc"><code>[:oban, :started]</code> event</a> to report the system time as <code>start_time</code> when jobs start. This enables span tracking for jobs, improving integration with monitoring tools like NewRelic. <a class="mention" href="/u/coladarci" rel="nofollow">@coladarci</a></p>
</li>
</ul>
<h3><a name="p-165999-fixed-2" class="anchor" href="#p-165999-fixed-2" aria-label="Heading link" rel="nofollow"></a>Fixed</h3>
<ul>
<li>[Oban] Handle the <code>:shutdown</code> message when a job is killed purposefully.  Previously the message was ignored, which caused the producer to keep a reference to the discarded job and prevented dispatching additional jobs.</li>
</ul> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="165999" data-batch-url="/posts/batch_likers">
                        10
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/oban-reliable-and-observable-job-processing/22449/202">Post #201</a>
	                </div>
	            </div>
              <div id="likers-container-165999" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="165999"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #201"></div>
  </section>
</div>
</template></turbo-stream><turbo-stream action="replace" target="load-more-container"><template><div id="load-more-container" class="load-more-container">
    <a class="load-more-button" data-turbo-stream="true" href="/topics/22449/load_more?page=21">Load more posts (111 remaining)</a>
</div></template></turbo-stream>