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


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I’ve been implementing every new API point that doesn’t use ActiveRecord business logic as an HTTP service in Elixir. It’s been working out great - seeing lots of advantages: easier development, fast, low memory.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="76657" 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/replacing-rails-background-jobs-with-an-elixir-service/13336/12">Post #11</a>
	                </div>
	            </div>
              <div id="likers-container-76657" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="76657"
                     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 #11"></div>
  </section>
</div>
    <div class="postbit" id="76660" data-post-id="76660">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>The easiest way to this is to make an independent Elixir (web)app. Rewrite some of your Rails app code with Elixir code and let the Rails app communicate with that Elixir app via rest HTTP.</p>
<p>If necessary, let the Elixir app access the same database and probably share the users session (if any) with the Rails app.</p>
<p>The downside is of course on the added latency when communicating between these two.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="76660" 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/replacing-rails-background-jobs-with-an-elixir-service/13336/13">Post #12</a>
	                </div>
	            </div>
              <div id="likers-container-76660" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="76660"
                     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 #12"></div>
  </section>
</div>
    <div class="postbit" id="77014" data-post-id="77014">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>We’ve been using a similar strategy for our push notification needs.</p>
<p>The basic architecture is Rails enqueues jobs in Redis (using Resque), but these jobs never get consumed by Resque. Instead an Elixir app running Exq consumes and runs these jobs.</p>
<p>It’s been pretty much smooth sailing consuming up to thousands of jobs per second. It is however extra infrastructure complexity (one more machine to provision, run and monitor along with a different technology stack to maintain, and learn how to run in production). In our case this complexity was well justified by the simplicity of the implementation and the load it withstands - 2 weeks worth of implementation.</p>
<p>If we were using Ruby, we would need a lot of processes (and therefore memory) to be able to run at the same level of concurrency.</p>
<p>Your mileage might vary though.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="77014" data-batch-url="/posts/batch_likers">
                        3
                      </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/replacing-rails-background-jobs-with-an-elixir-service/13336/14">Post #13</a>
	                </div>
	            </div>
              <div id="likers-container-77014" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="77014"
                     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 #13"></div>
  </section>
</div>
    <div class="postbit" id="77024" data-post-id="77024">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="axelson" data-post="6" data-topic="13336" data-full="true">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/axelson/48/26351_2.png" class="avatar"> axelson:</div>
<blockquote>
<p>Verk  is another Sidekiq/Resque compatible job processing framework.</p>
</blockquote>
</aside>
<p>I don’t understand why people keep pushing things like this when the <em>author of Sidekiq himself</em> has created a language agnostic Sidekiq called Faktory. Where the mission statement is practically, “You know how ubiquitous and awesome Sidekiq is? Now it’s available in any language.”</p>
<aside class="quote no-group" data-username="beaorn">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/beaorn/48/11610_2.png" class="avatar"> beaorn:</div>
<blockquote>
<p>I’m in a pretty similar situation, but as an intermediate step, I’m looking at replacing sidekiq with faktory: <a href="https://github.com/contribsys/faktory" class="inline-onebox" rel="noopener nofollow ugc">GitHub - contribsys/faktory: Language-agnostic persistent background job server · GitHub</a></p>
<p><a href="http://contribsys.com/faktory/" class="inline-onebox" rel="noopener nofollow ugc">Faktory - high-performance background job system</a></p>
<p>faktory is made by same creator of sidekiq, but can distribute jobs to one or more servers and jobs can be executed by clients in multiple languages, including ruby and elixir. It seems like a natural progression from a rails app running jobs in something like sidekiq w/o doing a full scale rewrite of the app to elixir or elixir + phoenix. If you ever do chose to rewrite the app, then potentially could keep using existing faktory workers too.</p>
</blockquote>
</aside>
<aside class="onebox allowlistedgeneric" data-onebox-src="https://github.com/contribsys/faktory/wiki/Related-Projects">
  <header class="source">
      <img src="https://github.githubassets.com/favicons/favicon.svg" class="site-icon" alt="" width="32" height="32">

      <a href="https://github.com/contribsys/faktory/wiki/Related-Projects" target="_blank" rel="noopener nofollow ugc">GitHub</a>
  </header>

  <article class="onebox-body">
    <div class="aspect-image" style="--aspect-ratio:690/344;"><img src="https://opengraph.githubassets.com/ef1329dc19a4a12bfaac8cb80195284be6453a844e95918510e33a0c77296386/contribsys/faktory" class="thumbnail" alt="" width="690" height="345"></div>

<h3><a href="https://github.com/contribsys/faktory/wiki/Related-Projects" target="_blank" rel="noopener nofollow ugc">Related Projects</a></h3>

  <p>Language-agnostic persistent background job server - contribsys/faktory</p>


  </article>

  <div class="onebox-metadata">
    
    
  </div>

  <div style="clear: both"></div>
</aside>

<p>Just sayin…</p>
<p>Look, I’m an Elixir zealot at this point, and I want the language to succeed. And I think normalizing around something like Faktory as the defacto standard can help with that.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="77024" 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/replacing-rails-background-jobs-with-an-elixir-service/13336/15">Post #14</a>
	                </div>
	            </div>
              <div id="likers-container-77024" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="77024"
                     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 #14"></div>
  </section>
</div>
    <div class="postbit" id="77025" data-post-id="77025">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>If it wasn’t immediately obvious from the previous post, the official Faktory wiki lists an Elixir client.</p>
<p>Full disclaimer, I’m the main author of the Elixir client and I also worked with Mike Perham years ago.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="77025" 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/replacing-rails-background-jobs-with-an-elixir-service/13336/16">Post #15</a>
	                </div>
	            </div>
              <div id="likers-container-77025" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="77025"
                     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 #15"></div>
  </section>
</div>
    <div class="postbit" id="77030" data-post-id="77030">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="axelson" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/axelson/120/26351_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  axelson
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Scenic Core Team</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Well the (upcoming) <a href="http://contribsys.com/faktory/" rel="nofollow">pricing</a></p>
<blockquote>
<p>“Advanced features for the advanced business, Price TBD.”</p>
</blockquote>
<p>Is a reason to be wary. I know some of the features under Sidekiq Pro/Enterprise are features that could be considered to be important to a large number of use cases (such as rate limiting and periodic jobs), but generally I’m just trying to provide insight into the multiple available options.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="77030" 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/replacing-rails-background-jobs-with-an-elixir-service/13336/17">Post #16</a>
	                </div>
	            </div>
              <div id="likers-container-77030" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="77030"
                     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 #16"></div>
  </section>
</div>
    <div class="postbit" id="77032" data-post-id="77032">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>If you don’t want to write/manage these features… someone else will do it for you… for a price.</p>
<p>My company used Sidekiq Pro for about 3 years, then abandoned it for OS Sidekiq with our own, in house developed middleware and extensions.</p>
<p>What’s there to be wary about? It’s <em>literally</em> open source.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="77032" 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/replacing-rails-background-jobs-with-an-elixir-service/13336/18">Post #17</a>
	                </div>
	            </div>
              <div id="likers-container-77032" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="77032"
                     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 #17"></div>
  </section>
</div>
    <div class="postbit" id="77952" data-post-id="77952">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I think to have robust features with a level of support business critical applications require, the model that Mike Perham has taken with sidekiq and going to take with faktory is ideal. You get great features for free that are open source that people can build solutions on top of, BUT if they dont exist out in the open source space or the ones that do arent maintained, you can get enterprise level features through the paid levels they provide. I also think that lets him (and any team) make a living keeping the open source implementations maintained alive and usable that tons of apps are using for free. I’m pumped about faktory 1.0</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="77952" 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/replacing-rails-background-jobs-with-an-elixir-service/13336/19">Post #18</a>
	                </div>
	            </div>
              <div id="likers-container-77952" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="77952"
                     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 #18"></div>
  </section>
</div>
    <div class="postbit" id="162342" data-post-id="162342">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="axelson" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/axelson/120/26351_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  axelson
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Scenic Core Team</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>In case anyone is still coming to this thread (based on views it appears so). Another good option for running persistent background jobs in Elixir is <a href="https://github.com/sorentwo/oban/" class="inline-onebox" rel="nofollow">GitHub - oban-bg/oban: 💎 Robust job processing in Elixir, backed by modern PostgreSQL, SQLite3, and MySQL · GitHub</a> (this is the job library that I like to use).</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="162342" data-batch-url="/posts/batch_likers">
                        7
                      </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/replacing-rails-background-jobs-with-an-elixir-service/13336/20">Post #19</a>
	                </div>
	            </div>
              <div id="likers-container-162342" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="162342"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-last-post cat-last-post" title="Last post!"></div>
  </section>
</div>
</template></turbo-stream><turbo-stream action="replace" target="load-more-container"><template><div id="load-more-container" class="load-more-container">
    <span class="all-loaded">— All posts loaded —</span>
</div></template></turbo-stream>