Is this the best design for asynchronous notifications (such as email)? Current design uses Web Site, Azure Service Bus Queue, Table Storage and Cloud Service Worker Role.

I am asking for feedback on this design. Here is an example user story:
As a group admin on the website I want to be notified when a user in my group uploads a file to the group.
Easiest solution would be that in the code handling the upload, we just directly create an email message in there and send it. However, this seems like it isn't really the appropriate level of separation of concerns, so instead we are thinking to have a separate
worker process which does nothing but send notifications. So, the website in the upload code handles receiving the file, extracting some metadata from it (like filename) and writing this to the database. As soon as it is done handling the file upload it then
does two things: Writes the details of the notification to be sent (such as subject, filename, etc...) to a dedicated "notification" table and also creates a message in a queue which the notification sending worker process monitors. The entire sequence
is shown in the diagram below.
My questions are: Do you see any drawbacks in this design? Is there a better design? The team wants to use Azure Worker Roles, Queues and Table storage. Is it the right call to use these components or is this design unnecessarily complex? Quality attribute
requirements are that it is easy to code, easy to maintain, easy to debug at runtime, auditable (history is available of when notifications were sent, etc...), monitor-able. Any other quality attributes you think we should be designing for?
More info:
We are creating a cloud application (in Azure) in which there are at least 2 components. The first is the "source" component (for example a UI / website) in which some action happens or some condition is met that triggers a second component or "worker"
to perform some job. These jobs have details or metadata associated with them which we plan to store in Azure Table Storage. Here is the pattern we are considering:
Steps:
Condition for job met.
Source writes job details to table.
Source puts job in queue.
Asynchronously:
Worker accepts job from queue.
Worker Records DateTimeStarted in table.
Queue marks job marked as "in progress".
Worker performs job.
Worker updates table with details (including DateTimeCompleted).
Worker reports completion to queue.
Job deleted from queue.
Please comment and let me know if I have this right, or if there is some better pattern. For example sake, consider the work to be "sending a notification" such as an email whose template fields are filled from the "details" mentioned in
the pattern.

Hi,
Thanks for your posting.
This development mode can exclude some errors, such as the file upload complete at the same time... from my experience, this is a good choice to achieve the goal.
Best Regards,
Jambor  
We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
Click
HERE to participate the survey.

Similar Messages

  • Which is the best iOS for iPhone 3G? I am currently on 3.1.3 !

    Which is the best iOS for iPhone 3G?
    Should i update it to the latest 4.2.1 or let it be on my current firmware 3.1.3?
    I have heard that 3G is best on 3.1.3?
    Comment?

    If I may, I agree that version 3.1.3 is the best for the iPhone 3G, however, I am currently travelling in Europe and I have a SIM card from a local mobile company. I discovered the hard way that there is an option missing: Settings > General > Network > Cellular Data (on/off). This option is not present in iOS 3.1.3. So basically, you disable 3G but it is impossible to block EDGE, and your phone will automatically revert to it if 3G is not available, and you will occur cellular data fees anyway.
    I am sure of what I am saying because with the local service I use, I have unlimited data for $4 per day, but it is debited as soon as I consume one byte of data, then it is free until midnight the same day. Event if I have set Enable 3G = off, Data Roaming = off, for two days in a row, I was still charged the $4 a day because the Cellular Data was not off!
    I compared with my wife's iPhone 3GS with iOS 5.1, there is the three options, Enable 3G (on/off), Data Roaming (on/off), Cellular Data (on/off). The option to turn it off simply doesn't exists on iOS 3.1.3!
    With some research, I found that it is possible to block it anyway if you change your APN (Access Point Name) to an invalid setting. The easiest way to do this is to connect to the Internet using WiFi, then access this web site with Safari: http://unlockit.co.nz/ (from your iPhone).
    This online tool allows you to change your APN, it is very useful when you travel abroad and you use local SIMs. On the first screen press Continue, on the second screen press Custom APN to create an APN for a local mobile company, or press Disable Data (FakeAPN) to disable 3G and Edge for good. When creating a Custom APN, you will be asked to choose a Country and a Provider, then press Create Profile. Then, either way, press Install and "Install Now" or "Replace", then press Done. This will add two things to your phone: first, an app-like icon for quick access to the website http://unlockit.co.nz/, second, a new menu in Settings > General, labelled "Profile", that contains your new APN. Note that it is possible to add several profile information, and some may conflict with each other. Remove those you don't need. Don't remove them if you are not sure!
    I hope this works for you!

  • Music Libraries / Composing - Is this the best Mac for me?!

    Hi,
    So I was completely new to all this a year or so ago. I bought an old upgraded mac mini and Logic Studio, but since then I've been upgrading my sound libraries and the mini just can't handle it, nowhere enough memory (even though I currently have 8GB).
    I'm using a mix of high quality sound libraries, and I'm doing orchestral scoring, so I need something that can run ALL the sound libraries at once without falling over!
    Currently I have sound libraries like LA Scoring strings and, Project Sam Orchestral Brass, Symphonic Choir etc, and many others. My current mac can't even handle ONE properly without having logic stick up an error about 'not being able to process all the required data in time'.
    I'm thinking of buying this iMac:
    2.7GHz Quad-Core Intel Core i5
    16GB 1333MHz DDR3 SDRAM - 4x4GB
    1TB Serial ATA Drive
    AMD Radeon HD 6770M 512MB GDDR5
    Do I NEED that much ram?! Or will the better processing speed mean I don't need as much? Will this allow me to use all my sample libraries as plug ins for logic at the same time without any issue, with reverb etc? I just want a setup that will stop giving me problems and run without issue.
    Could you suggest a better buy or setup for what I need?
    Please help, i'm so scared of spending this amount of money then having it not work properly or needing to upgrade again soon. Couldn't afford to do that again.
    Please ONLY COMMENT IF YOU HAVE EXPERIENCE WITH SOUND LIBRARIES OF THIS KIND. I need specific help.
    Many thanks for all your help.

    Hi,
    Thanks for your posting.
    This development mode can exclude some errors, such as the file upload complete at the same time... from my experience, this is a good choice to achieve the goal.
    Best Regards,
    Jambor  
    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click
    HERE to participate the survey.

  • Is MDB the best choice for asynchronous request handling in EJB?

    Hi! We need to do some asynchronous request handling work in EJB. For
    example, the user sunmits a request and quits, and later he comes back and
    check the status/result of his request. Currently we are using MDB to do
    this. However, we feel that there are some limitations in MDB and JMS. Is
    MDB the most natural way to handle asynchronous request in EJB? Can any guru
    give us some alternative design strategies? Thanks!
    Alvin

    For example, I cannot cancel a request in the queue, MDB is stateless, and
    the performance...
    "Cameron Purdy" <[email protected]> wrote in message
    news:[email protected]..
    MDB is a good choice. What are the issues that you are having?
    Peace,
    Cameron Purdy
    Tangosol, Inc.
    Clustering Weblogic? You're either using Coherence, or you should be!
    Download a Tangosol Coherence eval today at http://www.tangosol.com/
    "alvin" <[email protected]> wrote in message
    news:3c9607d6$[email protected]..
    Hi! We need to do some asynchronous request handling work in EJB. For
    example, the user sunmits a request and quits, and later he comes back
    and
    check the status/result of his request. Currently we are using MDB to do
    this. However, we feel that there are some limitations in MDB and JMS.Is
    MDB the most natural way to handle asynchronous request in EJB? Can anyguru
    give us some alternative design strategies? Thanks!
    Alvin

  • What's the best app for push notifications?

    I successfully set up my exchange server to push email to my iphone and my inbox and all subfolders show up fine.  I have outlook rules set up with exchange that automatically put certain emails into specific sub folders, but I'm not getting alerts (message badge alerts) when these emails arrive. I am getting alerts when anything comes into my inbox, but I have to check each subfolder manually in order for the messages to sync up.  Does anyone know of an app that resolves this or any type of fix. Thanks again for any help you can offer her.

    Try going to settings> Mail> Your account> Mail Folders to push> and select all the folders you want pushed to your phone.
    It will then alarm you when you get a new email.  It shows the badge on the particular folder you select.  So, it won't show up under inbox (obviously since it isn't there) but you'll have to look at a view that shows all the folders.  So, depending on how you have your view set, you might not see it at all times.  It doesn't seem to count  it in the unread emails you see enumberated on the mail app.

  • Which is the best MacBook for me to buy if I want to use it for digital video editing as well as Photoshop?

    All the Apple MacBooks have been upgraded.  I am looking for either a MacBook Pro or a MacBook that I can use to edit digital videos and do some Photoshop work.  Which one would you advise me to go for?  I am considering the 13”.

    Welcome to the Apple Support Communities
    I recommend the 15-inch MacBook Pro if you can afford it. That's because Photoshop runs better on a dedicated graphic card, which only the 15-inch MacBook Pro includes, but it should run without any problem on a 13-inch MacBook Pro too

  • How do I emulate the "save file as" from IE on Firefox? I have a web site that instructs me to right-click and "save file is".

    IE has an option of "save target as".

    See also this old KB article.
    *https://support.mozilla.org/kb/For+Internet+Explorer+Users
    *https://support.mozilla.org/kb/Browsing+basics
    *https://support.mozilla.org/kb/Tabbed+browsing

  • Whats is the Best platform for CiscoWorks installation.

    Hello,
    Please advise whats the best platform for CiscoWorks installation. We are currently using the windows 2003 32-bit and CiscoWorks is slow.
    We are currently using the LMS 3.2, RME 4.3.0, CM 5.2.1
    THANKS

    We are using 2008 R2 for LMS 4.0.1 - runs great - need loads of RAM and page file but we have not had many challenges. Java seems to run away with memory at times and we cycle out the services but it runs great.

  • My daughter is a college student. she needs to write and compile c programs on her mac for a class this semester. what is the best place for her to start to get the correct compiler etc. to use ? thanks

    my daughter is a college student. she needs to write and compile c programs on her mac for a class this semester. what is the best place for her to start to get the correct compiler etc. to use ? thanks

    If you know that you will not be asked to design GUI interfaces, and the C programming course will adhere to command line compilation environments, then get the Xcode command-line developer tools, and skip the extra complication of Xcode until you absolutely need it. Apple has kicked GNU C to the curb and is rightly so, using Clang/LLVM compiler technology.
    Sign up for a free Apple Developer account using your Apple ID, and then visit the Mac Dev Center, and towards the bottom of the page, you will see additional downloads. Click on the associated, all down loads link. Know your OS X version beforehand, as the command-line tool releases are tied to general operating system versions, and the most recent Xcode version.  That said, there are currently two March 9, 2015 command-line tools for Xcode 6.2 — one for OS X 10.9 Mavericks, and the other for OS X Yosemite.

  • TA24002 My 500 GB can't verify nor repair. I have photoshop work that I need to recover. I would like to know which erase option would be the best solution for this problem.

    My 500 GB can't verify nor repair. I have photoshop work that I need to recover. I would like to know what option would be the best solution for this problem?

    You appear to have two issues: 1) a hard drive that is not working properly and 2) files you wish to recover.
    Re 1) you need to answer Kappy's questions.
    Re 2) does the drive load and can you see your photo files? If so can you copy them to another drive?
    Do you not have a backup of the photo files?

  • I have problems in the initiation of the Encore process when opening presents the following error message : "Encore CS6 Cannot Run in Non-Royalty Serialized".... What is the best solution for this problem ?

    Help Me.
    What is the best solution for this problem ?

    Encore is activated when you activate Premiere Pro... so, as Stan asked, how did you install P-Pro?
    Ask for serial number http://forums.adobe.com/thread/1234635 has a FAQ link
    -and a fix for Encore http://forums.adobe.com/thread/1421765?tstart=0 in reply #7
    -plus more Encore http://helpx.adobe.com/encore/kb/cant-write-image-fie-larger1.html

  • Adobe X PDF files converted to jpg, edited and converted back to PDF have ragged, unclear text.  I didn't have this problem with Acrobat 9 standard.  What is the remedy for this.  If this is the best I can expect, I won't be able to use X standard.

    Adobe X PDF files converted to jpg, edited and converted back to PDF have ragged, unclear text.  I didn't have this problem with Acrobat 9 standard.  What is the remedy for this.  If this is the best I can expect, I won't be able to use X standard.

    I can't imagine any worse workflow than converting to JPEG to edit text, then back to PDF. Text in a PDF is a vector thing, smooth at all resolutions. And JPEG is made for photos. EVERY conversion to JPEG and back loses quality but how much loss there is will vary.
    If you must go to an image format, try PNG.

  • HT4914 I purchased iMatch because my old computer was failing and I was afraid of losing my music library. Now I bought a new laptop; what is the best way for me to transfer my library to my new laptop? Will iMatch help me do this?

    I purchased iMatch because my old computer was failing and I was afraid of losing my music library. Now I bought a new laptop; what is the best way for me to transfer my library to my new laptop? Will iMatch help me do this?

    Is/was failing or has failed?
    If the old computer still runs one of these methods may be best.
    Method 1
    Backup the library with this User Tip.
    Restore the backup to your new computer using the same tool used to back it up.
    Deauthorize the old computer if you no longer want to access protected content on it.
    Keep your backup up-to-date in future.
    Method 2
    Connect the two computers to the same network. Share your <User's Music> folder from the old computer and copy the entire iTunes library folder into the <User's Music> folder on the new one. Again, deauthorize the old computer if no longer required.
    I'd recommend method 1 since it establishes an ongoing backup for your library.
    I don't have personal experience with iTunes Match, but in principle you should be able to download all the tracks currently registered to your iTunes Match account. This isn't quite the same as restoring your previous library exactly as it was. There is always the potential for iTunes match to provide the wrong version of a song and could be content such as movies, podcasts, audiobooks etc. that would have been excluded.
    tt2

  • I am looking to start developing apps for the iTunes Store, but I have no previous experience. What is the best way for me to start on this? As in which programs and materials must I need and what I need to know. Thanks!

    I am looking to start developing apps for the iTunes Store, but I have no previous experience. What is the best way for me to start on this? As in which programs and materials must I need and what I need to know. Thanks!

    You will need a Mac, with OS X 10.6+ on it, to be able to develop iOS apps.
    There is some info on these pages :
    developer site : https://developer.apple.com
    developing for iOS 7 : https://developer.apple.com/ios7/
    developer support : https://developer.apple.com/support/
    developer forums : https://devforums.apple.com/index.jspa (you will need to be a registered developer to access them)

  • What’s the best practice for this scenario?

    Hi,
    My users want the ability to change the WHERE and/or ORDER BY clause at runtime. They may define user preferences on each screen ( which is bind to a view object). They want to see the same records based on WHERE/ORDER BY defined on the last visit. That is why I keep the users preferences and load the screen based on that, using :
    View.setWhereClause(...);
    View.setOrderByClause(...);
    View.executeQuery();
    This works good when only one user working with the application but faced low performance when more than one user working with the application.
    What are the points to increase the performance and what is the best practice for this scenario?
    Thanks for your help in advance.

    Sung,
    I am talking only about 2 users in my testing. I am sure i missed something but could not recognize that.
    This page is my custom query page including a tag to instantiate app module in stateful mode at the top <jbo:ApplicationModule..> and a tag to instantiate data source <jbo:Datasource...> and release tag at the bottom <jbo:ReleasePageResources..> and some java code in the middle(body). The java code constructed the query statement and then fires the query to set the view object based on the query statement using the above methods.
    So, I am facing very slow performance(speed) when two clients load this page at the same time. Looks like the entire application locks for others when one client load this page and fire the query. i realized the battle neck is where executeQuery() is executing.
    what do you think.
    Thanks in advance for your comments.

Maybe you are looking for

  • Files to big

    Hi there!, Does anyone know who to compress swf files as i have just built a site and it takes a long while to display in the browser? Any ideas will help! thanks shayne

  • How do I delete photos on my iPad that were added with the SD card adaptor?

    I added photos to my iPad using the SD Card Adaptor over a year ago.  They now appear in the 'Photos' tab on the iPad.  They are not in Photo Stream and they do not appear in Albums under Camera Roll or Last Import.  I have connected my iPad to the P

  • Editing Songs In I-Tunes

    If I take a song from my cd with a hidden track at the end of it (last track on the K-os CD) and theres that long silence, how do I cut it out, can you edited in I-tunes?

  • Import 1080 60p AVCHD to iMovie!

    The latest iMovie`11 (version 9.0.4) will not import 1080 60p AVCHD 2 videos directly from my Sony NEX-5N camera. The easy workaround is to copy the video files to the hard drive (best done with BootCamp Sony Picture Motion Browser) and then rewrap t

  • Look for unread mail

    Hello, Somebody knows if it is possible to filter the mail to look quickly for unread messages in iphone 4s? Thanks Bruno