Project Liquid Sky, building out the Akka.net components. Day #94 [C#/Angular/Kafka/SQL]

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
[Music] [Music] [Music] n [Music] oh [Music] okay welcome all travesty thank you very much for the luck I appreciate it unicus good evening how's it going Wings boneless with fries really healthy I just uh just grilled up some burgers some uh turkey burgers and uh regular Burgers spent most of the evening in the pool so I uh rilled some food up just finished eating decided I'd come and try and stream to keep me honest on this stuff default integration event so do it that way paste it in there ref Factor adjust my integration [Music] event not a difficult one why is that not set to uh select open file there you go so I'm just going to paste these in to make this this function wow I am down quite the rabbit hole there aren't I I event that's a mediator thing no that's my CF obstructions awesome so that is interesting so that okay so what I am trying to do is I am trying to test Kafka and AKA kind of joining the two together um for those that weren't in stream the other day I'll figure out how computer's work in a second so this is where we are with the application right we've got attachments working we've got requirements working so all this stuff is now starting to come together but uh I want to get to the notification side of things so we get to this oh no that's not the version that's not the good version we need the good version we need layout messaging flow there you go there's our layout so the way this is going to work um right now we have the view consuming the cro events that are the integration events and what I want to do is build the changes component out so this would be responsible for figuring out what events should be published further forward and I'm going to lean into Kafka still at this point notifications might be a service bus message out out to the rest of the system as an event that happened but um right now I'm going to lean into Kafka still so the streamer changes will come through um broken out as figuring out what actually changed um so we're going to kind of work on this part with AA and the reason I'm choosing AKA as I kind of went into um in the previous stream is it allows me to parallelize this functionality so when I get an entity I can guarantee I'm going to process the entity and work with the entity [Music] um so it it gives me that um I can work on that and other messages can come in and I can process them right so what we're going to do is we're going to do something like this we're going to get the receiver we're going to build the receivers up for Kafka so we're going to configure that in a second and then we're going to um create actors that that kind of describe the workflow so determining like I said here right um we're going to ask do we do we know about this entity if we do then we need to tell it we need to go to the actor that figures out the changes if we don't then we go to a different actor that's going to be responsible for publishing out um to Kafka that that a new entity was created so it's not up to us in the the benefit of this is it's not up to me in the application stack to to care about that that that those events right all I care about is this data is needing to be produced to the wider system so when I get to planning um uh when I when I actually touch a planning item right um when I subscribe to the notification I don't care I don't need to figure out oh have people seen this before the changes system will be responsible for saying hey by the way this was created [Music] um I mean if anyone joins the system afterwards everything is an update anyway so they'll have to deal with updates um but they'd be built with those entities in place anyway so so what I'm going to do is I'm going to prototype out the AC of pieces see which pieces I need to configure see if there's anything else I need to tidy up uh to put into the main application and then build out um the changes as an ACA uh um system and I'm going to use the hosted version of it because I can I can actually scale this out and scale this up um if I'm looking over there it's because I don't have the prompter on the camera I have the chat up to my to my right hand side so I apologize if I'm just turning my head all the time to uh uh to to to talk because you're over there for me um so what I was doing earlier on was adding my Kafka library in here to try and get the the CFA configuration working um which will then allow me to get these these events being received and processed so what I what I'm going to do is kind of learn a bit more about Aur as I go here whether I need to create uh dto or whatever so I'm open to ideas I'm open to suggestions um but overall the goal is to kind of flow this through right is to is to um hey Frank how you doing how is your Saturday evening going so basically we get the the same event and now it's going to process it here later on we're going to have the monitoring process but I only need to figure this out once I need to figure out can the can the ACA components work U monitoring will be a completely separate um concept I recently bought a new monitor gaming monitor 4K and all that they didn't have it in best bu so I had to wait for it o I hate that when you have to wait wait wait wait wait for technology when you want a new toy there's nothing worse than that wait doing well happy to get you happy for you to be here it's a a later evening Saturday stream because this will keep me focused and uh save me from watching twitch and YouTube when I picked it up I got convinced by a sign to get me a meta Quest 3 when I picked it up the quest three doesn't look too bad I like the uh sign was very convincing do you watch um do you watch um D does Tech stuff on YouTube um he's he's a funny Tech YouTuber um um he's uh he's hilarious and he just did a Quest Video today um is he actually only tech tech YouTuber I follow anymore um I I stopped following most of the others um actively following him anyway so okay so what we need to do is Let's uh refactor this adjust name spaces get all these events in place so everything works correctly we can get rid of this now because now we've got our integration event um and we'll make this the um this is this is hard because now this is a full message so um let's make let's just make a sample message in here and that's going to be a record and that's going to be let's make it sample message yeah so sample message period identifier string name date time they added there you go that'll stop that complaining at least um now the actors let's create a folder for them so we can see them at a glance that'll help um we want to call this this wants to be the sample message actor and that's going to be sample message right just so we can prove that out still in this in the single one uh Morning Joe evening hi Mojo how you doing uh I hadn't tried VR before the closest to the three chat out back in 96 in school it's interesting first experience my first experience with VR was playing quake in 97 on one of the early VR heads the early like that was yeah that's when I learned I could get quite nauseous but I I tried the quest too not too long ago I've got a psvr2 I've got an valve index and a Samsung Odyssey headset and psvr um and I've tried um my favorite game is actually gr Turismo on the uh psvr2 it's just amazing okay so yeah as always if anyone has any interest any ideas uh as I'm going along through this I'm I'm open to new ideas so basically what my plan is um is to at least get to the pro typing of figuring out what changed and talking about um those things the fell griso Enthusiast I I've Loved gr Turismo since the first one on the PlayStation one me and my brother spent a long I actually went and and bought a a uh the f one of the first Rumble pads one of the first dual shots back when they were an add-on with analog sticks to the PlayStation DT doesn't make you sick no I I love that game um I've yet to try it with my wheel I I need to get my Logitech wheel back out and get that set up but I don't have a good seating position for it um but uh yeah I I love grismore and yeah I like driving fast as well in real life so I'm not afraid of the speed of it well the psvr2 is actually pretty good yeah okay so let's go well the dog's rubing a moment the challenge with trying to stream this late is the dogs um the dogs decide when bedtime is they get very grumpy if you don't go to bed okay so what I need to do is so I have what I've done is I've got this this Kafka library right so this is my rapper around Kafka GT's T yeah I've never I've never done a track day my wife got me tickets a long time ago and I let them lapse which I forever regretted and uh constantly heard about um okay so I created this Kafka uh component uh to to kind of save me some time and actually this is one of the things that that is scaring me about using um [Music] um Aspire because the the Kafka configuration I lot actually looks like I'd have to to embrace using Kafka through a Spire I'd actually have to use their libraries for communicate to for setting up consumers and pro and producers Etc and I don't want to jump through those Hoops I built entire Library around using CFA and it would be very difficult to uh to build something different to use something different now so what this does is when I add CFA I can say hey go and pull your configuration from console so I can actually store my my Kafka configuration for my topics at least inside of of of console so I can only i' only need the configuration once so I'm embracing having a key Value Store um shared across the application stack and then I pull the rest from cfco uh from C configuration in here um could you rap it become an Aspire component um I could probably figure out how how they wire consumers and producers up I suppose and see if it could be adapted and kind of create adapt around um but yeah cuz they they do from what I saw with the Aspire Stone they kind of handle a lot of this um it's very confusing because I work with a company that has Aspire in the name so net Aspire is very confusing so the Apache Kafka component adds Kafka producers so it registers the eye producer so my stuff uh not liquid sky this is I I published this as an actual set of Open Source extensions so I have um th this is the configuration that you can have so you can actually store the configuration locally still um but you can actually configure uh to use console which I need to document but I'm setting up the consumer I'm setting up the the publisher and I actually configure out BX and stuff uh so i' have to figure out how all this works because ad Kafka that's my exact method ad Kafka right so his purpose is to be cloud ready everything else is fluff to be fair it really just depends if you want to see is the deployment and part of development I see I don't consider this a hard part of De development and ultimately what I'd want to use i' want to use cloud Kafka anyway I wouldn't want to use a a uh deployed custom instance because the purpose of Kafka is its scale um um if you use something like confluent Cloud they'll deal with that for you right so that load is already taken off you pay for it but you get that benefit so you don't have to worry about doing that and yeah but anyway that's something that I'll have to worry about if I want if I want to tackle a Spire I've got to figure out how how all that works because obviously um I think we we were talking about Aspire really doesn't do well with fitting it into an existing application you've got to do a lot of tinkering um because again I've got just in this application stack right I've got um this is my Docker right so I have Kafka I have SQL Server I've got rabbit mq I've got redis I've got console running so I've got service Discovery in there um right so I've got all these things running already couch base may may or may not come back I think couch base will come back I think tickets might actually be couch base based in the end uh because I think it might fit pretty well for tickets um and you know things like this this this thing that I'm about to work on right there very it's very likely that that'll be based so I've got a lot of pieces and I'm trying to what I'm trying to do is not limit myself to single Technologies just because it might cost something right I'm trying to build the system the way I want it to be built to demonstrate this is what can be done now let's go and look and see what Corners we can cut and what you know um considerations we can we can peel back on so um I called this dispatching consumer because it will basically pull in um it might not be the greatest name for something uh but the dispatching consumer um actually fires them off as individuals so it can actually um multi it can it can serve multiple cues at once if you don't do that and you'll end up with serving only one Topic at a time um so it it's a challenge um where did I put that um configuration extensions outbox uh extensions yeah here you go yeah so dispatching C consumer actually starts them as new long running tasks so each consumer started on its own thread um you don't want to do this uh for if if you building this out um this does the the way I've got the libraries built actually do support having them um or I will support having them be able to say okay well this version of the library is going to run on this topic and this topic and this topic so you can actually um single single process these things as well yeah um it also help Endeavor and locally yeah but I mean I've got the problem is I've got a a great deal of investment of time in in this already um and to go from what I've looked at to go back and try and even retrofit Aspire into a 51 project solution where I've got all those dependencies used will be challenging to say the least and I don't think it'll gain me very much um for what I've got running right now so let's um let's copy this into the acur first steps part so we need to what do we need where's that console extension coming into um C configuration console infrastructure do I have that as an actual receivers so hold on let's have a look uh CFA configuration console okay so there you go I've got a separate new get package for that one it's like I'm trying to do this correctly so again all these are in new get all these are in GitHub so these are things that I use um that I feel might help there are other libraries around Kafka so confluent built Kafka libraries on top of um um the the the C++ libraries and then the net libraries sat on top of them so there's an abstraction and they've they've they've got an API there but this is just helping all the configuration and stuff to clean it up he bro what is this project about so this project is a um aimed at being a project management tool um ultimately aimed at going from ticketing through planning to stories and development stuff right um focused on trying to get the develop V ER to be as far away from the reporting aspects as possible um aimed on aimed at being um increasing visibility increasing accountability for product teams Etc so that they can track what they need without having to uh fret over developers um so developers can focus on what they need to work on and other things I kept kept focused on so um yeah is it's j like yeah um most of my career I spent working or most of the last 10 plus years of my career I've spent working on jira um and all the pain points that come with that I've played the role of um tribe lead and scrum lead I've managed teams and triy to handle the workflow through there worked with PMS that are highly motivated and work with PMS that are very unmotivated and all sorts of management challenges so um one of the things this app does is focuses on this review date concept so the review date is a mandatory field and it will again show um it will allow people to track oh we expect to review this by then and it will tell people it hasn't been reviewed it's it's expired um so there'll be alerting built around this piece um tracking which projects people think it's assigned to trying to gather better requirements um providing the tools necessary to um support that before even so I'm focused right now on the on the planning aspect of this and trying and I'm about to start working on the um the changes aspect telling people here's what changed so starting to get towards notifications either real time email uh dashboard style notifications and making that configurable so but often times I've been stuck in jira with where are we with this project where are we with this item who knows where this is ETC so I'm trying to solve some of those problems um uh through better reporting and visibility um before I even get to all the normal reporting of burn down and all those sorts of things so customizable config uh customizable alerting Etc um yeah but most people are already comfortable with their current ways we're using it at work and I like it but I do understand why people wouldn't want to add it to an already existing project I'm not scared of adding it I mean I I am scared of adding it to the existing projects purely because of the amount of time it would take for a Spire to get put in there um so you know it would be it would be a challenge my biggest concern is the amount of stuff I have to customize to be to follow Microsoft specific things so if CFA changes because Kafka does change quite drastically sometimes if they change their under lion libraries um how fast do Microsoft respond with their stuff right um so once youve built those dependencies in you're kind of hooked on that I mean if you take a dependency on my stuff right it's the same thing it requires me to maintain it and now if people actually start picking that up I've got to keep an eye on on the way those things work um but uh yeah Aspire just doesn't seem like something I can just pick up and and run with uh in in his current form um when does this go beta after one Lion's Community Day one of the devs at work came to me and asked about making jir easy to use well we got to get there right this is a slow process um um I'm hoping that I can accelerate once we get past once we get to the changes thing and the notifications start to come in I start to get to to Tinker with this and actually start to um dog food it myself um uh I'm a junior Dev what do you think about net future I'm confused a bit I should go with spring boot or de not C for better career salary this is a stupid question I don't know I have any suggestion there stupid question I think it's a very valid concern um I think net has a very strong future Microsoft are heavily invested it it's not going away um it's I mean same as Java and Spring right um they're both wellestablished Technologies um it's I mean if you're in school learning one of them then i' I'd kind of give that a go um it can't hurt to compare and contrast and see where you're more comfortable uh for me umet just felt good from day one um and I've been doing it for I've been doing net for 20 years um I've been a developer for over 25 um and know it's it's I've made a career out of it and I don't think it's going away anytime soon.net um if anything it's got stronger the last couple years because of the decisions they made um not all good decisions there's some you know some of the web Technologies I I think they still seem a little bit confused over but yeah we both received compliments during our quot reviews but we both thought okay it was undeserved because we haven't felt productive what you consider productive and what the business considers productive aren't always the same um I know that feeling um uh uh you know you can do so much more right um yeah if the business is seeing that you know it's it's a a compliment to your work ethic that it's uh showing through um ads are going to start on Twitch at least in about 30 seconds I do apologize if you get stuck behind them um I enough time shat one one line stream for two hours yeah yeah it's but you shouldn't always be busy you especially on a Friday you should be able to be relaxed and uh and take it easier okay so let's uh let's do this so unfortunately right now this Library does require me to do um to configure the the actual receiver so the way this is going to work going to create a for call receivers it' be interesting to know because um it sound like defx has been going through a bit of DDD stuff recently I'd be interested to know from his perspective you know what he feels like project structure should look like what he feels what he's understood from from the the stuff so far um cuz I still tend to to align to technical concerns too often um but use cases here never feel good so and again I'm the one working in the cbase so I'm the one that has to uh has to maintain it so it what makes sense to me right now so this is going to be the planning item integration event receiver planning item receiver so one of the beautiful things about Kafka is wow that's quite interesting you think I can do that actually that'd be really interesting we doing it that's like that's like a Azure function I'm not writing a your function um Bing item receiver so I'm going register that and then in here we're going to do configure do ad event receiver and this is the event and so this goes to the planning item receiver I think that could actually be streamlined a little bit I event receiver planning item integration event and this just receives that event so at this point I'm I'm at I'm at this phase here right I'm I'm going to build this out now so the beauty of Kafka here is I have um all the events that I've created for planning it in the last couple of days right because they don't go away um and then hasn't been two since I is it 80001 or 8080 8080 so there are 23 messages inside of the cafka topic for this so I can keep resetting this and use this for testing data right now right so I don't have to just keep going back and creating I don't have to go through the entire stack and create data actually offset 205 so here you go two weeks ago so kafka's got a 14-day retention policy potentially on this on this configuration um this might disappear soon but I've got all these messages to work with these are integration events that happen so when I start this up it will actually receive a message and do something um so we need to create an actor right um and actually in this case I can do it all in here right because it's all specific to this project so this actor just needs to be there now this can get removed actually I need the sample there so the the for anyone new to this stream for anyone who doesn't get to hang out here normally the rule is I'm okay to talk about stuff I'm happy to discuss I don't have to be productive if you have questions thoughts opinions on what I'm doing you're more than welcome to ask um this code is an open source um uh the larger project is an open source primarily because it's now massive and I don't want to deal with that um the more I think about it the more I'm like I still wouldn't open source this right now um but yeah if you have questions on what I'm doing if you want to know more if you want to dig in more you're more than welcome to ask and I I'll happily divert and discuss so with this setup what's going to happen is um I need to configure I need to create an actor uh I need to create several actors actually because the way I'm thinking doing this and again it's a it's kind of a prototype because I want to make sure I understand how a is going to process this stuff right um my understanding is what's going to happen is it's going to hand off to this actor and um it's going to then receive the next message and hand off to the actor so I could potentially be processing the same planning item multiple times that's going to be a challenge that I need to figure out first um this may crash um we'll see so the way I want this to work is oh no I removed the I removed the part I wanted to to do but it doesn't really matter because I've got the idea so I want to I want to start with querying do I know about this entity um if I don't know about this entity and this is going to be I'm going to have to and create a mock data base of some form here um if I don't know about this entity then should add the entity um and I should publish forward an event that says yep the act the event was added so we're going to just console right line for that for right the second if I do know about the entity then I want to then I want to proceed and figure out what the change was from the last time I saw this entity right um things I may hit um I'm not going to look at persistence right this second for c for AA um there is way persisting it because again once I pull once I pull the message out of Kafka and say I'm done with it I don't get to replay that message so whatever happens in here if I don't process it if it errors in any way I've got to understand what that means to the larger system so I won't tell the system this information changed which is which can be quite expensive right I'm relying upon an external component to calculate what what the difference is from before and after the change set so if two people go to change things at the same time who wins right um I might have to deal with things like that so there's there's all sorts of challenges coming down the line for this um some of them I can test and some of them I'm going to have to figure out how to build large scale integration test for to prove um to prove the resilience of these these pieces is but baby steps okay so this actor let's refactor that just Nam space yeah what it does it's a receive actor and it receives a sample message and it just processes that message that's how it's configured um it logs it knows when the system starts it up and it knows when the system shuts it down so we can actually do things configure things Etc on the actor um it's kind of like a a running process itself it just kind of suspends until it's needed uh and it will handle the message that's sent in so there's two types of actors there's a receive actor and there's a untyped actor an untyped actor can be sent any message and it will have it's got the responsibility of figuring out oh what do I need to do right so it can ask the type Etc of the message um so I'm GNA I'm going to try and make this um quite explicit to see if it's uh um to to try and get the ideas in place and and see that they fit with with the way AKA and Kafka are working together so the first one is an exist actor the challenge with this is it would be nice to be able to use this from everything because I don't want to I don't want to create an exist actor for the planning item an exist actor for the um for the uh tenant I don't want to create I don't want to keep creating exist actors for everything that's going to be challenging um so if message is running it integration event integration event no pling item right now I can do something with this right so we're going to have to create some uh infrastructure um data store right so what we're going to do here is create a public a private list of object uh data yep um going to add that we're going to add is T so we don't lose the type entirely right that's going to be possible null reference uh FIV data store data [Music] equals that can't be null possible reference no no uh public Bo public aing uh T get T Funk t ball redut okay so we're just building a a simple inmemory database okay um here we're going to do services. add Singleton data store right so that should allow us to at least uh store that and in our exist actor we're going to inject data store right and then exists equals so we need to learn about ask and tell so you can you can ask an actor something and you can tell an actor something so if you tell it it will just deal with it it will go off and process that uh on its own right it will go receive the thing and process it if you ask it it has a response to give you ask no we just not going to work on that one okay fair enough get started device actor uh um so another thing right um this is going to be difficult because it's another technology so now I have mass transit with rabbit mq I have Kafka I have uh I'm introducing AKA I've got SQL server in there I've got I can have uh couch base in there there's a lot of moving paths there's a lot of Technologies I've got mediator and then I've got my own technology stuff on top right there's a lot of moving Parts which are difficult to hold on to and I can't become an expert in every single one of them right I'm there's no way I can be a top tier expert on every single component should that be should that be scary a little bit right because if you go in what you know then you fail less right because you can you can you can understand how to use those things but the problem is I wouldn't consider myself a top tier expert of SQL Server I would't consider myself a top tier a top tier expert any component because it's there's a lot of the technology to learn there's a lot of the pieces I don't use I can learn through the development of this enough to understand the challenges I've already figured out how I will do it differently right I've already got some ideas in place I could use just purely just use Kafka but again I I think I'm embracing that ability to to use the right technology I can build this on on some assumptions I can build this on top of some some solid ideas and then later on if they don't pan out I can build something else and swap them out right as long as I'm producing the events it doesn't matter to the rest of the system how those events are produced so I can focus on this later on um but as long as I understand what I'm doing now I think it's fine uh supervision and monitoring we're not going to get into the I understand the supervision thing so in terms of error reporting and handling there is a structure to to the way that c that AA lays out um actors and child actors Etc so you know there is some some stuff there [Music] um dispatchers I don't think dispatch is something I want to care about dependency injection um acad dependency injection I think I've got acad dependency injection already in here uh to get that working uh packages I don't not yet well we might find out some challenges in a second [Music] um posting may have actually done some of that stuff for me so we'll worry about that afterwards persistence I need to get to um Finance date machines yeah again so you can kind of have AKA kind of talk to itself and and kind of mutate State throughout many many uh actors as well uh uh why can I find an example of this top level oh we asked we asked we asked we don't ask we're never asking anything it's all tell it's all tell so what I think I should do is create a uh processor actor and again I'm guessing I'm I'm trying to figure this out as I go and it's why I'm streaming it right because if I stream it then it's out there people can pick it up on it if they want to um if see if people see stuff and they want to talk about it then fine so I wonder if no I can't because I don't have control over this so it' be nice okay well now I've done this up here right do I need to do anything else but yeah so so in this we're going to say bar result equals so do I inject actors um inject actors I don't think I do other actors I think I in I think I inject the actor system system and then I can do system Dot bar actor equals system. actor of exist okay exist actor and then that would be name [Laughter] TBD oh dear this is small things um props do create um exist actor no pop st create uh type of oh it's new exor that would be weird Mommy Mommy actor and daddy actor are we doing Peppa Pig AO see at daddy at I service let me okay we're going we're going to test it we're not going to mess around with that right so I wonder if I can inject exist actor in here so then we can say if exists act do ask no that's not that's not going to give me an actual actor is it interesting so actor system system and then in here do system. actor of uh exist actor why don't you like that must be a non-abstract type with the public parameters construction enus right so that has a challenge there so di is going to be a challenge it looks like but it's see so what I'm trying to write is in here we're going to say we're going to roughly say this um if exists message then we want to um um process changes right cuz we're going to compare what have we seen before to what we have now until the system what changed otherwise we're going to say um publish new message so this process actor is the one that's going to be handed off to so in our planning item receiver what we're going to do is we're going to inject a uh ENT the access system again um I saw an example of this so I'm going to go back and and look at how that was done uh but we're going to inject the actor system in there in our receiver and this is going to do system do actor of uh crops. create something like that right and then we're going to tell it the event right so we're going to pass it the event down return task completed task what this means is AKA is going to take over here so it's going to hand off this message and AKA is going to take over so in terms of threads wise this is going to go back and tell Kafka yep I'm good we process this because if you look at the code that I've got for CFA I have the uh topic consumer obstruction samples Services huh I feel I've got some uh reorganization to do here because what that's telling me is that my code structure is not quite as apparent as I want it to be so that's interesting I've got publisher there I've got the dispatching Kafka consumer but that is just a consumer that is oh it's topic consumer there we go so topic consumer so the way the consumer works is it's going to create a builder get the consumer then then run in a loop right so it's going to consume the message if the message is null for whatever reason skip on to the next one get the event deserialize it T event right um if the event is null we we go away otherwise we take the event receiver and we call receive event and then when we've when that's completed we call commit which says to Kafka we're good we got this right once we fire this right it will return immediately it is asynchronous it will run off but you can't await it you can't say oh hold up I need to do this right you're telling it of the actor you know this is going to give me the the act the actor instance back I'm going to tell it here's the event that's asynchronous that now goes off and runs inside of the process of of AA once I do this Kafka is going to acknowledge that and move on to the next message which is my concern because it means that I could potentially receive the same ping item that I just received right um so this is going to be challenging also I probably for the sake of dealing with this I do want some semop for stuff in here to deal with the the multi- threading nature of what I'm about to attempt because if I try and touch these these are not concurrent collections so um concurrent concurrent bag uh data to add yeah uh public void update t t item uh dat that's not going to be a thing um that that's going to that's going to work by virtual of yeah we'll figure that out in a second I don't need to worry about the update part just yet so yeah if there's any questions um read only no uh the object is read only no it doesn't need to be so in the exist actor we're going to inject the data store we're going to check to see bar exists equals data store.get so the challenge now is I need a model right uh let's create models PL item um this is this is going to represent the database object right so I've got to build this out enough to be a a proxy for what I'm actually going to build so uh VI infrastructure entities planning item it's probably this let's go with this first right let's go that let's see what happens so planning item is p goes to P do uh uh identifier identifier uh not first a default start as you mean to one right uh the reason that doesn't exist is because I'm that is an inherited event of view base I know I'm copying in large chunks of my code I'm copying in large chunks of existing code but I I just want to get to the point of demonstrating this piece for myself more than anything else right um so that should stop that complaining so we're going to go to the data store we're going to get the planning item uh that matches that and we're going to get first the default on that um and then we're going to do return so this is where I'm getting into the ask thing I need to figure out what does ask how does ask respond ads are going to start on Twitch in about a minute I do apologize again so we need to go to AKA we need to go to the AO docs I need to figure out where ask is used um to system supervision monitoring act to referen these paths looking up actors some actors reing actors interesting that I don't have ask versus tell in here does make me consider supervision monitoring at refen and paths at systems uh ask there you go I act a bridge when deploying I could um so that comes back with a response that's the difference ask act to ask so how do we set up an act that can be asked the question is the question so do we set it up different L we untyped that so that's an abstract method right so let's have a look TBD TBD TBD that's not good so receive on receive abstract void receiveable receive so is there an untyped actor no that's not thing I can't do that cuz that's not that's not legal so let's have a look um AA ask it's important to distinguish between aaet and AO although it's based on it is as I understand it not kind of a code copy late night Dev late night 10 past 10 no no what I'm asking you can hook um AKA into kafa as well I've learned but uh yeah that's all that's not don't ask I at to receive at to receive request ask reply so the ping pong stuff is off and the uh the demonstrator here receive app and stop seems overly complicated I me it kind of makes sense but that's now 9 years 8 years old [Music] um I know ask isn't as often used as tell because it's kind of preferred cuz it's it's but I don't think it's actually synchronous to ask that's going to be one of the things I want to I want to see actor a ask act to B hell only P the pipe P patterns. pipe yeah not we're not quite that advanced yet I like how these are completely lacking every time I think even this demo this yeah this demo is a is a tell uh API reference API dots uh ask app to T schedule I don't think I'm going to be successful in this one I know I know I can look up um you uh stunard uh standard pet Bridge AA that example there you go so Aaron standard is uh I think the founder of aka. net or rather pbridge which is the company that runs I could that primarily clustering reliability well we get into a uh I could code samples that's not really I could code samples is that event sing in cqrs I'm not I'm not trying to go this deep straight away of generate child parthey um what to seems uh like there there's something missing there ask oh ask don't ask tell 2016 H come on 2015 so much stuff I mean it's the good news is it's been around for a long time right the bad news is is these are they are updating this it's not I'm using a library that's completely out of date right um yeah let me a moment right now because I I've seen a demo on this recently so um not get hope um new get okay two days ago all right it is being updated uh right there's plenty to do uh let me off screen so I know what I want to try and do here I know what I'm trying to achieve um the the difficulty is how this process messages yeah uh St out say well I want to see code not video was [Music] after I saw an example um so I'm looking for a code sample AO get to seeqs it driving me crazy the the problem is that with this application stuck I'm trying to solve the problems using using technologies that are best suited to those things right so in this case I'm trying to use a technology that's best suited to parallelism um and distributing that data and distributing that responsibility I can add in extra nodes relatively quickly and get the processing through that I need changes are something that's going to be calculated all the time but a lot of these libraries have kind of embrace this well we can solve all the problems with a with a bit of change then we don't need to have any other Integrations so there's a whole cqs component to to um to AA and stuff and message and and whatnot and even Kafka as as confluent has kind of embraced that of late and kind of demonstrated using it as a message bus but it's not a message bus it's not it wasn't built for message bus so I'm trying to use the right technologies that I feel are appropriate and distinct again have set usages here right Kafka I'm going to use Kafka to produce data that's that's primarily what I'm doing the events are inferred by the things that consume them the the actual use usability of the events it's just data um if I need to tell the system something explicitly I'm going to create events using mass transit and and and rabbit mq so I'm going to use Eventing at that level to tell components of the application things right um hey how you doing how you doing um I am currently playing with AKA or trying to play with AA I'm struggling at a a bit of a a stumbling point I'm doing good doing good just uh I'm tired and this is my way of kind of focusing enough to uh get get through this so I I figured I'd stream uh get the stream up and uh get working on this so I'm trying to do is get this component in here so using the same events that the view consumes for the data kind of go and figure out okay well what changed uh and then publisher streamer changes out and ultimately notifications because again I'm starting to move towards these review dates so when the review date goes past you uh get notified uh how do you want to be notified all those sorts of fun things so but right now I'm struggling with I need to ask this actor um do you exist and it return yeah or n so I'm trying to find an example and it actually seems pretty difficult to find an example of an a actor asking another actor for something the documentation seems to be lacking in this respect so it's frustrating me right the second second um let's have a look let's see tell ask uh do not use ask class science isolation rule acent let's have a look let's see if they give an example uh ask string that's just rules uh looking for I love some samples here be really good actors untyped receive the reactor model receives provides a high level of abstraction for writing concurrent distributed systems too bad for you um it doesn't permit you to put links in even though he has just be rewrite the Dos it's it's not letting me see those links because but you're a sub I thought it would allow you yeah please I know several of the docs so far have come up and uh uh buy some messages here we go receive no um yeah the the uh the do documentation comes up as uh uh TBD which is just more amusing I call far iron but never use that yeah so the the again the reason I'm using AKA here is because AKA supports the parallelism that will allow me to um truly challeng truly pull these changes quickly right if I was to use Kafka I could use Kafka and scale out the number of consumers to parallelize that that effort but if I use AA I get the benefit of having single service that uses more of my CPU more of the more of the available threads it deals with all those concurrency issues um well some of them I've got a feeling I'm going to hit one of them uh very quickly I'm going to have to overcome but it it does deal with those sorts of things and I can describe the process more accurately with Kafka I'm going to end up with a Handler that Rees the code and does some processing and does does a lot of lot of stuff um whereas I can break these down into into individual pieces with AO so I think it is the right technology for the job I's going to learn my way through it so how do you set up an actor for ask that's what I'm trying to figure out a second untyped actor up working on the full rewrite of AC documentation ACO hosting makes it so much easier right sample than it before nice yeah they are um it seems a lot of good points to use that but the whole web is stateless so why care okay man when it comes to well again it's it's kind of to me it's important to try especially now um I have the chance to explore Technologies right um and I do know that I what I want from this so to be able to tell me the review date change to be able to tell me the assign to change to be able to tell me oh this project changed Etc I need something to process that I need something to figure it out like I said I can do this I can do this in Kafka I think that though the Kafka code would not look as elegant and would actually be less flexible than the the ACA side of things and also to get scale out to get throughput there I would have to start multiple consumers very early on in the process right because the moment that I have two people making changes those changes are going to get backed up if that goes to 10 people those changes are going to get backed up even further so I have to scale out the number of um CFA consumers very quickly whereas with AKA I can just put this on its own dedicated uh machine even with four calls or whatever and I have that throughput straight away um so I can I can get more of the actual resources of the system uh used effectively through using AA so I think it's a good choice to to kind of experiment with it now um you know it could go the way of couch Bas right it could go the way of I get so far realize the limitations of it that that don't suit my needs right now and back it out and that's okay if I do it because I've learned a lot along the way to get there um so but it will benefit me right to understand that and again I want to the way this is going to work is I have two types of changes the change the life changes which I'm referring to as changes are monitoring monitoring is oh this expired or this hasn't been touched in two weeks or those sorts of things like watching the system as a whole and being able to say things aren't going quite as well as you expect right um in terms of you know a story hasn't moved or a a a ticket hasn't been updated in six weeks you want to be told about those things um notifications is the consumer of those those events uh and will be responsible for I I think the notifications component in general will have its own it's kind of this is cyclical right it will have its own API and users will able to configure what do they need to care about right uh how do they care about it right so notifications as as a system will care will will track oh the person wants to be told live about these things but wants to be told in a daily digest about these things right um and also notifications are broadcast mostly with parallelism you get going to hits simultaneously High simultaneously will create back pressure as well can somewhat set back pressure in AA there's there's going to be not quite sure I understand the back pressure concept so I'm going to look at um uh is it distribute systems from the resisted low of data I have to deal with at some point if it's frequent problem the term itself isn't near as understood uh yeah that's what B pressure is I don't want I don't want analogies G I'm sending this in fast but it's coming out SL yeah okay yeah yeah it's um again one of the things you can Embrace in a system like this is the most important thing is that it don't lose data right so notifications Etc I I don't I don't want to lose them and as close to real time as possible is the ideal uh it's probably 15 years from now yeah um real time notifications are not something that I am necessarily striving for close to real time is good enough right um what I need is the system to be resilient to I need it to be uh consistent for data so if I change something I want that change to be there right I don't want it to be lost and that's that's what the system is doing so far the way it's designed is I save the thing and then everything else is external to that right even The View is external to that um it it's a separate concern so the the primary concern is capture the data that the user has asked us to capture you know validate it by all means make sure that the actual data makes sense in the context of the system but once it's captured it's captured it's it's not going to change um again randomly or it's not going to break Etc so that's why the core databases are there that's why the the the publishing to Kafka the the embracing the fact that Distributing this data and Publishing it around does give me a lot of flexibility and a lot of advantages yes there may be slowness right eventual consistency is a thing that I'm going to have to deal with right if if I change something you know my manager shouldn't see the the the notification that this thing changed within half a second might do might work fine um but you shouldn't you shouldn't need to worry about it being there half a second later you you can be comfortable a couple second after it tells you it's there that's fine so um yeah pushing pushing through the throughput of the data um again like you said it's a problem for 15 years from now not not necessarily um tomorrow what could tell what could tell what could tell okay we're going to do this we're going to ask Gemini um how do you configure actor to be asked uh how do you configure asking in.net all specific configuration for asking use the ask method on the target act to reference this method has takes two arguments a message you want to send out to a time span whichs a task right but I want to see want to see don't just keep giving me code receive int receive async but if I remove that that's that's a an abstract base uh receive at uh uh SE uh receive yeah but that's not that's not that though is it uh no it's not two argu oh it is X why do I have a y no you can basically calculate the lag factor with Q Theory CF is supposed to be processing streaming data in real time but then the resource is saturated you need to upgrade but you're too late for that I mean for me it's a nice problem to have right it's a nice problem to have to worry about um um to atti paaths logical this is interesting but I don't have in scheduling un typed is recommended for C seven users why see about this is uh this is quite telling though ask send receive future the while ask waits for response does not ensure it receives any kind of priority messages sent bya ask Q in to what the same way the messages are sent bya tell right show me an example of an ask an Ask re response like that's what I'm after right mailbot is it's not mail Bots even though it uses the word mail bots in that other one dispatchers this is what's worrying me right a second okay the documentation has been overhauled but what does that mean for me right a second uh the only thing is I've seen an example I just don't remember where I saw it and that's that's bugging me um untyped TS untii is recommended for c 7 users suggesting that as of C s and Beyond it's uh good for everything rece messages see on un receive object so that's a generic receive and un typed that's kind of what I want to do right because what I what I'm aiming for here is figuring out okay which which thing am I going for um so you know the UN typed is okay here so that's a generic on receive or General on receive not a generic po Choice words um that's a data store data store right that's fine but how do I respond so uh maybe it is context do it ain't that so again the I can tell uh nice to know someone else Embraces the uh that that funky style nothing like a good comical interface [Music] um I didn't expect to be stuck here to be quite Frank I'm I'm I'm concerned by how stuck I am uh so early on in this process because I think that I've got the right idea and I think I'm using the actors uh appropriately I don't think I tell the parent though uh sender. tell does it transition it like a state justes no because that's that would actually have to have me receive different events right because I could I could tell the existing to to process it and when the existing process it it could tell the uh the uh processor to move on right so I could actually chain these together as events but I think the ask is the correct think yeah that would be the uh the finance State machine I could actually I've done this before I've implemented the FSM so you uh when I process sing a bunch of data I actually the first time I tackled this this this exact problem what I tried to do was say okay well there's many layers to the processing so the first layer is figure out are the changes yes there are okay well then transition to the processing State and i' track that State uh so I knew where things were so if it restarted it could presume with the data it had uh but I'd also manipulate that data I don't think this is uh um uh I don't think this is that case I think I that would be over complicating this right now because I'm not manipulating this I'm just trying to make a decision on what event what what I need to do next and the first one is have I seen this before if I have seen this before then I need to test I need to look at the two things and compare and then produce a message um so it's frustrating that I'm I'm so stuck um there's got to be a good example um using so let's let's see if Gemini can help um how do I reply how do I reply to a an actor that has asked to do something in a.net reply to the sender so you do tell the sender okay but that seems really broken then because then okay so here's how that goes um the processor if we do it that way right the processor is an untied actor what it does is it says um let's create the messages um it says the entity already EX exists or the entity does not exist right so public period and those would be T entity like GID identifier I how can I misspell identify thatly identifier uh where T entity is your base actually going I do that uh G identifier everything is an identifier so that should be a safe enough assumption uh TN uh yeah I suppose that doesn't matter does it uh exist uh type entity type uh and this is the opposite right record uh typ and already exists right so then in the exist actor uh this is this is messy but then we do sender. tell uh new entity already exists type of planning oh no planning item sorry and then exist dot identi um if exists so again that's going to be exists equals null uh not equal to null exist is not no otherwise right so then that doesn't make sense because then we're dispatching that pluss yeah we are um if so switch message case uh case message is Amal hello how you doing how things yeah still good evening for me coming by 11 o' um I don't use this stuff near enough with the pat matching one a few since long didn't join yeah yeah I've been missing people I have uh been making solid progress on the platform stuff uh I don't know if you've been keeping up with any of the videos at all um been doing a bit of Game Dev here and there so if message is so we right now we have you know we made progress on the platform we've got a lot of uh well not a lot of features actually um yeah I'm working I'm T I'm tinkering with a.net because I want to kind of try and explore uh identifying changes in my uh in the data so tring to see if this fits the need and I think it does um I think I just got to get my head around the use cases um what do you I don't think that's actually oh there we go that's was complaining about that so I suppose what this is is if it's a um I integration event um event con HED yeah that's what I was concerned about uh my syntax on this switch um uh switch magic I do not use these very often um I just got to get my head round oh yeah yeah I Google it too yeah I I just don't so it's message switch for one I think um no because that would be the response that's not that it is this way um you can p much I'm pretty [Music] certain muching overiew hav read transform switch case to switch expression yet yeah they do they do have some stuff I just uh command switch I thought there was a way doing in the regular switch maybe it's not maybe it's only on the uh old school style but ultimately what I want to say is because again the way this is set up now right the the integration event going to come in here right but this this actor is going to receive the different events but it's going to move on like a state it's going to move on like that state machine that I was talking about uh uh freur hello how are you doing uh this AET is it only a toour natural framework that aims to replace ASP so AA doesn't aim to replace AA implements the actor pattern and what it's really focused on is parallel um like scalable distributed systems so in this case I'm leaning I want to lean into the parallelism of the its processing capabilities so that I can handle and process many changes coming through the system at once right because again if if 10 people come into this system and they change the review dates and they change the creative bins they assign to the projects they change tickets they change stories they move things around Etc lots of things are going to happen so what I want to do is be able to process these events coming through here so again the integration events that I publish from here should be calculated as differences right so if I change the planning item I want this to say oh well I've seen the planning item before this is what my current version looks like oh here's the fields are changed to publish those events forward I want to be able to do that so I'm using AKA to process these events [Music] um uh AKA does scale pretty well and it can be expanded very easily without too much configuration from what I know so far um so it does make sense it's just and it also allows me to describe using its actors so an actor has a job right so the actors in this case I want the exists actor what this does is it's going to pick up the item and I might make this more generic whatever and it's going to tell me does it exist or does it not exist uh and that's its job and then the processor is going to respond to that so the processor is kind of the coordinating actor is going to fire off these requests and do things um my challenge so far is though that the I'm not using this as a state machine I don't want to use this as a state machine uh and this is I don't believe um remember ask involves asynchronous communication so your reply should be sent with an asynchronous content yeah so I don't understand um because I think this would work but I want to be a to I want really ideally I want to say ask um uh if I use ask how do I reply but you don't you're just repeating the same thing uh can you show me an example of the sender and the uh asking the other actor for sender actor worker actor worker actor ask some response message ah I wait the response so okay so the way that that's demonstrated there what this does is this works still I believe right we're sender so we we are still just telling because everything is asynchronous anyway all these different uh things it's just how AA Coan those events happening so in here I can do but I don't have tasks why do you give me a task and okay so you make this a receive actor this this changes this up quite a bit because it it makes a uh a bit of a mess I think but I think the idea is that you kind of you not you shouldn't be composing massive processes in here um so this this is going to receive pting out some integration event right uh um and then in here uh what we want to do is VAR exist sector equals exis sector right and then we're going to do so we can make that async so now we can actually embrace and then H so let's that's actually not now I need to kind of generalize it because I think that needs to be a response uh so this is an entity exists response and it is or exists FSE that's horrendous but anyway we can we can worry about repres think it differently later on uh what I need to get working right the second is is the actual process right so we're not going to do it that way anymore we're going to do uh this because we're asking for this right the the synchronicity means I don't need to know um I don't need to know about the identity because I'm not responding it out of process I'm not passing the messages back and forth here I'm actually going to pause and wait on this one so this is going to say VAR response equals await exist actor. ask and this is going to be an entity exist response um and we're going to send it the message right if response do exists actually don't we don't need to default that at all because we actually do care um right now get into it um if it if it exists so here what we want to say is if it exists um we need to calculate the changes if it doesn't um we are yeah so let's see if I mean we can see if it works pretty quickly right console. right line exists so again we can say uh message. identifier exists else um doesn't exist then the irony we can put some other stuff in there in a second but anyway let's um colors Etc we don't we don't want to don't want to waste the time doing that that's bothering me that the really priv uh that doesn't like that CU that should be that right yeah I'm optimizing before I even get to that point um let's see if this works so again I'm using I'm using my um my cap Library here to consume these events right so I'm going to have to uh this this will because this is consuming this it will actually pull the cafka configuration uh we'll just have to copy in the uh the app we'll have to add the app settings in there so let's get them in there now um I didn't default it to this so uh properties [Music] option okay that's that and we need to go and get the uh consumer configuration from over here so again if you have any questions about what I'm doing if you if you are interested in knowing more about what this is doing or you know knowing about the project um I'm happy to show stuff um this is a ACA demo integration so again we're going to start we're going to start the the topic uh querying uh we're going to set it to the earliest on the each topic uh that we consume we're not configuring the topics that we're going to consume here what's happening is these when I register these uh receivers that's actually going to set up the the topic subscriptions so um that's that's fine and it it'll pull from console the actual CF configuration so for each integration type it knows which topic is going to pull from the F that so here we're going to go registry. register the um we need the actors now uh so we're going have to register the exist actor and this this syntax I'm still getting my head around so this is a system. actor of uh that you can't do that because you've got to do props do create uh props being this but again this the challenge is I can't do that because I'm going to get the dependency injection problems so let's go back over here and try and do uh system. actor of uh exist actor why don't you like that must be a non-abstract type with public parameters Constructor okay so here we go now we got a challenge um try register is this actor see this wants an actor ref um but I can't get an actor ref because system again I'm going to I'm going to get stuck in a a loop here because I'm going to say okay well I want to create it uh and that's going to be an exist actor but that's going to go no because I can't create that because I don't have a a public instructor on it so let's go back to to C to AA I'm going to keep confusing him we've got dependency injection as of AA 145 acad ior all Li that implemented deprecated just use dependency injection um so here um add single turn how does this help me with actor Constructor makes that uh how does that help me with dependency gestion um allows you to inject an i service provider okay I don't want a service provider I want I want di to to kind of take over here uh and I thought it would do because the oh there we go I can do prop. create or um do register uh exist actor system. actor all um propop St create um exist so that does make me think that here I want to get the actor not actually um create a new actor because what's the point of registering them here um if I have uh because there what's the point in using this if I I should I'm able to say system. gat actor of exist actor interesting it's the same syntax so I've got to register it that seems redundant that seems very redundant what does that complain about so that it needs the actor so I need to create an actor registry do register well this actor system Act of again I can't use the generics here because I have to create um I think he can pass other things into props as well uh which helps okay the the challenge for me right now is there's so much code that I've got to do uh I'm going to struggle through the uh setup so what we want to see what we want to see happen I want to receive the event from the uh Kafka consumer I should hit here and then I should navigate into here right and this receive should say okay well I've got that event um so I can handle it and I'll call into this one so that registers the receiver for that actor uh the exist actor is an untyped actor that I can send a message into and I can ask uh if the M If the message isn't the right event uh so again I'm using the event to determine what to look up this is this is going to have to flex somewhere because I'm going to have to Define some sort of clearer way of doing this because it's going to be Rin and repeat the only thing that's going to change is this or maybe I create a a a dictionary of integration event to planning to uh to date data store object and I can refer to it and the data store right now is a Singleton so that I can kind of keep track of this but what I think is going to happen is when this runs in parallel and this is going to get hard to debug now because because of the nature of it once it fires off that first one and I hit F5 it's going to hit the second one so I'm going to go back and forth with debugging this um if I've got break points in here because it's going to run them in parallel I'm going to get stuck there so I I am going to have to tackle the problem of I'm might receive two messages for the same entity right behind each other I can't guarantee which one finishes first so I'm going to have to look into some level of um um stabilization there on a single entity um so yeah that that's going to be the biggest challenge so let's let's run this one um yeah once I see it happen I just want to see if it even gets to the startup right now um once we see it happen then we can uh build on that I expect it to error there you go okay uh error while creating an actor instance of type process actor with zero args uh ER world creating actor instance of type plus actor with zero ARS really where zero ARS but I want the active system in there but I want the active system in there that is the active system yeah that is the active system this is the I construct these um Constructor not found error world creating okay so that doesn't work so let's have a look at uh what kind of runtime era is that h i could dependency injection I don't think this is going to solve my problems magically I think this is going to create more problems but let's uh let's get that that was a different kind of error wasn't it uh um that's quite an interesting message they like using the colors wow I managed a 2our stream already uh so it's struggling to construct them so even though that syntax suggests everything's fine it really isn't this doesn't create some magic this still needs dependency so again coming back to the dependency ejection stuff I'm not trying to do this I'm trying [Music] to I don't need complicated um act system no uh a.net actor system uh with dependencies can call after acoet is AET Foundation project nice concurrency stream proing working out loud um they do have a course actually they do have a built-in course uh here you can do a boot camp and go through things I just don't want to I don't want to do that on stream for certain um I apologize I'm getting uh I'm getting tired uh I could it succinctly working with that to 2018 again all um I appreciate the free ebug but yeah wow all the old stuff Castle Windsor autoa aad deprecated the support we're on 1.5 so yeah we're definitely beyond beyond that now don't make me go injecting service providers that's not fun resolve my dependencies just give me give me a way of resolving resolve for an system props no that ain't fair but because it's failing here um so how do I do that uh let's have a look with there's no extension for it there's no configuration for it so what do you want me to do um rootstrap this might be the single worst code sample I've seen in a long time um how old is this video I mean he does a lot of content I I will say there is an awful lot of content for this this Library um we get it again how old is this content right um two months ago okay so this is relatively recent yeah stop waffling um okay install AC dependency inje we just did that uh props created by I service provider so we can do dependency resolver for okay that is horrendous so um bar exists props equals dependency resolver do four uh system dot props exist that ter and then that would go in there then bar process of props same thing that will go in there but my challenge now is what does this do does this work because the actor exists design time support $4,000 per year for just see know wow that actually raises a very good point right I'm I'm quite happily dropping Technologies in here oh there we go we did get to that receive uh it's going to fail here um I'm quite happily dropping Technologies in everything's working fine right um what happens when I don't know or I hit a problem with the technology like this right um let's say I got a bit further and then I hit a really complicated use case what do I do then how do I get around that do I do I need support do I need training so every technology you do add does add a potential training cost um we're not receiving a message are we uh we didn't get here so the the processor actor started up um the exist actor would have started up as well um I assume but the planning item receiver is not receiving so how do we do that how do we fix that so let's go back to our liquid scard um we need to but you know again do I shy away from this because it might cost money down the line is it worth it to me to invest the time now into this technology that let's say six months from now I have 50 customers and those customers are paying me hundreds of dollars a month each is that $4,000 worth it if I'm getting the use out of Technology probably right um I've got to look at it that respect if I was to build the system and I get a thousand users 10,000 users in in the course of a couple years the the licensing costs alone will cover those fees um but I suppose that's why big enterprise software does start to cost a lot more money because the actual things they're using to provide those enterprising features start to stack up right so at dispatching consumer that should have consumed I believe no it shouldn't have done because it's going to start no earliest it should have it should have and uh being strange there uh topics uh there should be another consumer group there though Hunning aent uh absolutely but the entry barrier is huge it seems not that it shouldn't be for this technology particular yeah it does seem a little bit harder but I think the the uh so that configured my actors but it didn't it didn't hit my receiver so it's actually this part that wasn't doing its job was me that wasn't setting things up so again add transient should they be transient yeah so I configure the repos I configure the transients uh into event to receiver I didn't screw that up right event to receiver no I didn't oh you know I'm a dope hey I'm out good night and happy cing junas thank you very much for hanging out uh appreciate it uh hope to see you again soon take care man and may your may your VR Adventures be fun okay so there's a problem here there's a problem with doing what I'm doing here nice my name space I can't have this name space because the Nam space of the event is part of the messaging right so this integration event over here is part of events integration so to get this to work out you have to make it match events integration but the problem is it will not match events integration because it will match this this when you read The View docks you appreciate it so much because no Lots like it see yeah H so there's my problem I'm not using the library so what I need to do here is remove these um actually I can remove I can move this over here as well now I can get rid of Shar in this in this context I can delete this I can't use it uh this is going to be a constant problem um well it's it's not going to be a constant problem in the sets of my main project right because everything's using um everything's using uh edit delete delete projects and folder yeah next that's fine um add a reference add from this is going to be quite a challenge uh liquid Sky Source message in Kafka bin ebug messaging events been thebook events um these will include now by the way well that receiver needs to change as well this might this should work now because the name space of everything is going to be going to be valid um it does mean that I probably do need to look at using because right now everything's integrated right so all the systems are going to be part of the shared Library they're all going to use that same dll reference for the events so their names spacing on all those are going to be valid that's not a problem when it becomes a problem is if I want to get a separate component up I want to consume the Kafka data I don't want that deal out and that's where something like um kafka's uh uh schema comes in place right so schema is I say okay connect to the schema system and um consume like create me the models of the objects but if I do that then the name spacing of the classes that I create there aren't going to match the classes that I've actually serialized out so the mapping of the topic to the event is great well I've got a DL to build off of so I need to redesign that um once I get to schema uh because there's a fatal flaw in that so let's start that again this should hit this event um you must have a reference to assembl Colonel oh reference I'm going to do it just because it's it's not I mean it's it's not ideal but it is uh this is a prototype it it is fine it's just uh not ideal Okay so we've got our receiver configured what I want to see here is that a second consumer group is started that's really what tell me this is working well enough consumer groups see it's not why are you not working let's go to the one where I know there's a consumer group that's working because I know view view does have it working view is about as good as it gets because it's uh yeah yeah I might want to do that that's a missing piece yeah I probably want to make that component of my my library don't I so um you need you need a worker service to be watching and uh I've seemingly left that to the Implement to the user to implement uh so that's not ideal because that's that's the service that we'll actually consume so we do see the breakpoint hit on the receive uh so registers the receive Handler [Music] by should work that's like of console address yeah that's all copied and pasted I don't see what the problem with that is um let's have a look so again if you're new to the stream if you are interested in what I'm actually doing uh feel free to ask if you're not new to the stream that's all okay too uh this is my bet is it's trying to register the 49 yeah that's fine the this begins consumer on event consumer that's the service that Loops through all the uh the registered event receivers well that's the only one that I'm actually using an address of uh lo9 to Docker is running fine um we can see Docker running fine um did that actually register my consumer group no it still to the consumer group there so it's not even got to that point where would ask [Music] co-pilot copilot do so my back is we can test that we can put it to the test uh is oh hold on where are you going where are you going why you that's that why are you that figure oh it's I've got that's that okay and dispatching consumer um deer break right there there okay so let's have a look I think it's starting up and is another configuration is what that's that's failing for um if we go to uh 10 and we go to Red variables and we go host context D configuration console address no that's why that is failing uh copy way Kafka so console address I don't see what's wrong with that why are you actually having an issue because I know why host Builder there is no configuration loader here normally I'm starting these from create default Builder that's why create default Builder has configuration built into it I'm not built that's why I didn't get an app settings when I created it because I'm not even building it that way so if I go back here and say host dot create default Builder now I'll get configuration and that will work probably so let's have a look okay so let's go over here oh look we have an address configure our Handler and there we go we've received our event so we've got a kafer event we hit F5 and we explode actor name process actor is not unique so how do I get the actor so that's because I call it processor actor over here and I call it processor actor in there how do I get the instance the actor is the question uh how do I get let's let's have a look and see if j i knows how do I get an be an existing actor by reference I obtain an existing for specific scenario context active selection TBD TBD TBD actor of let's see if we'll do it uh entity existor you can't do that right it can't do out to selection either that's ridiculous like ask cuz that's as if I'm configuring a brand new actor of that type and realistically I shouldn't need because it's stateless right um is my understanding so right I shouldn't have to worry about um with actors hello actor create props that create new there's a lot of mess in there I don't I don't get that don't they talk to me through the through a channel but you need to but you need the I need the I can't inject the actor right that's the problem I mean maybe I can now maybe I can maybe I can say Okay I want the exist actor now that di is configured can I do that um is this actor let's get rid of that let's get that tempor let's do that let's do that I mean that doesn't know about ask why do you not know about ask if you know what an exist actor is yeah because that's not actually an actor It's the weird part I heard you create millions of actors J think it should be okay right uh you'd think it would be actor of prop start V8 that's where I was before right um I don't want to inject the dependency resolver that would be bad but props doesn't props is is see what that's telling me is I can get away with that if I can do context then I don't need to have the active system involved because context is the active system that's an untyped actor that's really weird um but that won't that won't work because I've got exists that's yeah I mean from what he says from what he talks about there is um very little memory used per actor there is very little system resources use brat to um okay so we we're still receiving so because I failed out I probably didn't complete that which means that I carried on and here we go that's that's the problem it's the it's this one that's the problem active system so I'm getting it's not actually the processor that was doing the problem it was here um it would have hit the same problem because I'm going to get that um system dot instant as instant Sol no in expensive yeah they're very small active selection but it's not it's user processor bar selection equals that selection dot tell event let's see so you this is me relying on the hierarchy which I'm not entirely certain I want to be doing but there we go there's our actor there we go oh and now we get onto the uh the multi-threading part of the night uh so what happened then is we went back and hit planning item receiver with the next planning item which is probably the same planning item right so the exist actor yep there we go there we go there we go yeah this is going to be this is going to be messy because I'm going to I'm now processing them all in parallel act now even exists right so they're they're being processed in parallel now right so that's just making a bigger and bigger mess well that's why I'm streaming this right I'm streaming this because I wanted to go through this and uh try and get some progress made so we could do the same thing right we can do select actor selection U and we can say user exist actor probably come up with some naming stru for this is this is weird because this feels very much like good do when I'm asking for res sources right so that's interesting we get there we get there get that get there was not delivered it was UND delivered it was UND delivered interesting so he's trying to process the messages but they're all in the Dead Light que now so that's going to be so that's interesting um they're in aka's Deadlight key there so that was fun um the the in reality what probably happened there as well is I actually acknowledged them um so yeah like is five but I've processed most of them so the consumer group there acad demo integration right the yeah offset 200 yeah it's actually got through most of the messages so I'll have to reset afterwards so yeah like five so I've still got five messages to process uh the problem is though the exist actor has a data store dependency and the when I ask for that exists actor here it doesn't do dependency injection even though we conf figured it here using dependency resolver we don't get dependency injection so we don't get a because we've got a single to the data store we know it exists what I probably should do is make uh the exist a child of processor as well but um again understanding the hierarchies and stuff is for tomorrow me I don't need to worry too much about that if I can get this process flowing but it's interesting that we immediately saw the concurrency problem uh that I expected and again that is a major issue for this because I actually processed uh all of the same messages for the same object in parallel now is that a reality yes um if if the system is Flowing as intended it's very unlikely that you and I are changing the same object and that you and I are changing the same object at the same second to the point where that's going to error but if the system is down for any length of time if the system is unavailable like would take down the acur component we need to we need to do some updates on changes uh publish different events right then we bring the system down those c those messages back up and again one of the benefits of that is these messages back up we don't break the system by doing this right if we take down changes all we do is prevent notifications from happening for a while we don't actually do anything to the the system can continue working right so we can bring down components of the system uh for maintenance um quite quite easily when we bring it back up it could process hundreds or thousands of events um that you can't guarantee um so how could I do how could I do this well I could I could ask the first point but that would completely defe the point of using AKA and I might as well use Kafka at that point because again what Kafka does is Kafka guarantees that a a message of the same ID lands in the same topic in the same partition every time which means that you are guaranteed that they kind of f fifo for that message or for that um entity ID but again to get even that resemblance of um how goes it doesn't AO process like a que ACO processing is the problem is that AKA pulls out a a message and then runs that off and then processes the next message right it doesn't it doesn't wait um so in this case what's happening is I have 20 messages in Kafka I acknowledge it and hand it off to be processed it goes back and tells Kafka yep I got it let's move on to the next one so I'm getting the throughput of Kafka um but I'm processing I mean I'm I'm not actually hitting that problem yet but I will see it the same planning item but if one of those processes takes a little while for whatever reason the other ones will overtake it um so if if I get three events come in for the same entity um when you see that with CF go if I was pausing um the cfco extensions Library I've got calls receive on the event Receiver right so you hook up the event receiver uh this dispatches that event to the correct Receiver right so this event receiver here says okay you you consume this event and here's your receiver and that's what binds uh this here right we got the event we got the receiver so we can configure it all the moment I call receive I get my actor uh in this case I got lucky because I just removed the dependency out of of of this otherwise it would have failed here I then tell the actor here's the event that now is released so this this doesn't stop here this carries on and hits here when that happens this commits and then kafa goes and gets the next message and proces that next message um and passes that off and and the same thing and AA just accepts it and sends the messages in so Kafka is not waiting Kafka is going to send me the next message the next message and that's that's what I want to happen ultimately I want it to give me the through poot right which is from what I can tell so far a pretty uh uh difficult case to find in their docs now so here I am using the paws I am using request response I'm asking it of you know give me this resp response Bike by the way and uh do you exist sorry pardon me I think it's uh it's getting into that time um but the problem is this is this is failing right now so I can't even demonstrate this because this actor selection the exist actor has a dependency and I need that dependency in there um My worry is that the actual solution here is I service provider service provider is there and v data store equals service provider to get required service of data store I really hope this isn't the case because that's a messy way ofal like just give me real dependency injection if that's the case but I think I think I can I can probably overcome that challenge right if I can figure out this workflow enough I can once I can see it and visualize it I can actually figure out that that problem and say okay well I need to uh I need to overcome that challenge I need to um deal with the fact that I'm receiving the same thing again maybe that's how I do it I check am I actually processing this thing already if I am is my event newer or older kick it out right I feel like you should be able to configure an actor with a concurrency key so AA could work yeah that's probably I mean something similar right we've got to we've got to figure out do we kick this message out oh it does work I can inject a service provider but I can oh hold on it's telling me they can't find data store well that'll do it that'll do it h dear just just use the collection expression I put a private Constructor on it yeah that's not going to work very well was it so let's go back to the uh previous version of this and see if I now get data store injected it might actually work this time but you are right Mr Ranon the um I think something along here should be able to tell me [Music] um concurrency key now again I'm going to receive the what I'm going to rely on here is the fact that I can for any given entity I should receive the same ordering from Kafka right I'm relying on that PA there we go he got there this time so exists no right so now we should get back here we should have in the console in the output it should be console right yeah it doesn't exist doesn't exist doesn't it oh there we go we got a different one okay those I think that's all our messages now we've re we've uh exhausted the cube so what I want to do is if it exists I essentially want to say um uh bar uh um update actor then I want to call update actor. uh what do we want to send here put away the message again it's so nice having the week next week off I'm planning on a few weekday streams I have so much plan to work on finally getting audio in the engine I really want to get 3D Auto in by the end of the my vacation nice nice well I'm working for the first three days of the next week so I hope to get uh I get to to see that and then I have the week the following week off so I booked I booked so I have a longer period of time off because of the uh Thursday and Friday off next week so I have the eighth through the uh yeah um also I need to figure out if people do want to do the Q&A thing um actually that's uh I don't know I do this update act that tell Else Bar um create actor there you go up tell this is going to make a mess um um yeah and again I think this is starting to explain a little bit more about what I want to do right so if I can name these properly what I'm trying to do here is represent the flow as best I can right I'm trying to make these um kind of compose the actual flow of the system rather than having I could I could have a Handler in in Kafka where I just said okay well now do a b c d Etc I would like to listen in I'm not good at asking questions yeah I mean I want to figure out whether it's uh I know maybe next Friday would actually be a good day because then uh online streams at lunchtime I can joining his community stream but uh it's following week the problem with that the Q&A thing is if if people are working or different time zones it becomes a little bit difficult but I want to try and offer it to as many people as possible and I I might try and make a more routine thing of it um just general get together and talk about architecture stuff design patterns all those sorts of fun things uh create actor update actor okay so this is that's an exist actor update actor I've got to worry about when I'm going to put this speciality in here because this is a type actor right on receive yeah FR sounds like a good middle ground with it being in a holiday week might be hit and miss for us but it might work for the time zones yeah yeah I probably drop it in the Discord uh tomorrow see if anyone has any interest I could always do a couple of sessions but it let's figured out what the worth is of that uh weekends are a difficult one as well different people t t in different people come along in the weekend than in the weekdays go ahead yeah because again I think a more interactive exploration of what I've done why I've done things Etc is is good to offer but also then can get into discussion about why you might do something different and how you've done it in the past and why it works for you and explore those things because you know again again I'm doing this it's not I mean you you know probably more than most this isn't from complete lack of experience I'm being quite [Music] um uh adventurous in in my use of Technology uh but it's not exactly born from no experience of doing this sort of stuff um but again the patterns I follow the things I do aren't the same things as you might do or or anybody else might do so it' be it might be interesting to kind of offer that chance to sit down and talk about that in real time with the with a code base in front okay so what I want to test here is so this again is a planning item integration event right this is what's bugging me so far the structuring is going to become difficult so let's put that in there so in the create actor uh it's an untied actor um if it's not that then return um so what we're going to do is we're going to inject the data store in here data store do add new planning item uh this is going to be identifier equals pling out to identifier title equals uh it's going to be S messy hey de FKS how you doing uh yeah stating that brings a few good decisions to mind since you're focused on a product of front I pivoted in mind to a product yeah I the chance of uh just going through those source of things would be good so how's it going it's going well going well we're thinking with AA a little bit um let's see how uh some of these things work oh uh review date [Music] equals do dat 10 and why is that 10 and 0 that shouldn't be 109 um I see I don't need to worry about that right a second that's something I am going to have to worry about later though whether I care about that or not in this case this context I probably don't I probably don't care about relationships in this data store this data store can probably be something like or or or a no SQL DB um let's just do that for now this object doesn't really matter it's not going to hurt anything right so again we're going to create the actor um and then ultimately what this would do I think would be to publish an event um I found a bug in the Blazer format and every time I run it all my pre- tag shift one tab over that's less an ideal SC Blazer Blazer is bad what you up to this evening deflex anything interesting um so what I'm going to do is I'm actually going to go reset the uh iics going to reset the consumer group acad demo stay empty theum groups partitions H interesting uh Delete offsets so that will that should pick that up again just writing in Android app H you know as you do so this should create it which means that this should Now update it which is going to be uh console. right line dating planning item message dot uh learning as an integration event dot identifier uh this is a bit silly but no one can stop me I'll build my own Blaze with c and no HDML an Android out the backs of a bunch of my databases to spare Android tablet on my desk you know um an Android app that backs up a bunch of my databases to a spare Android tablet my desk like databases on the Android device script Punk okay let's see if that even flows um oh no it won't flow because I've not registered anything landed on one L Discord we probably need to go and configure the uh secret light okay this I like this I could get away I could uh be happily able to never do again that's going to upset me it's going toet me a lot uh it's just just there something wrong about this just feels uh show Cod doing his his his play with just C so now I'm creating employer a for employer B well both employers give me 150 aure cash every month the visual sh Enterprise sub so I want to have an app that backs up on my databases single have to switch the host of a ton of Cs I use that free money with uh yeah I forgot you did that you use that employer credit on your personal stuff uh I see for me I would never go near that s though I would never even get close to doing personal stuff anywhere near anything employer cuz uh like if I was doing this and I was doing this on any of my employer time or any of my employer resources I would panic because I would be because they would have a say on it they would actually have the right to take it I don't know how to write all Blazers just C but I'm it's not that I forget you can do that you can do a lot in C SHP can't you okay so that's with those actors registered we should be able to now see some of the messages probably a big crash but we'll see concurrency warnings are bound [Music] groups yeah I don't care in terms of I use for main players to go because G ENT takes on you when you fall one gotcha I I have a completely separate account for GitHub for I work uh coordinator topics consumer groups academ integration update offsets zero must be larger than or equal to2 it can be 182 then oh yeah give be 182 then like 23 okay so we should have this should catch up eventually so I sync my reps for my own account but vs is L do my employer thing yeah I learned a long time ago to never go near anything in play related on any of my personal personal equipment um I don't work on anything from home on personal equipment if they can't provide it I don't get it but sitting outside smoking a very nice cigar and somewhat humid but nice and warm backyard nice let's restart that make sure that's not going to it might just have blipped because I reset there if you if you kick af's legs out from underneath the consumer it can get a little bit tricky at times but yeah okay there is no active actor context this is most likely due to the use of acing operations from within this actor oh bite me uh see re uh for me I do not have a ton of money so using the resources Society lots for me in the most efficient way possible is my job I mean okay okay so this is this is now Tripp me up right because this is now said okay well you can ask this but um now this context has gone away so you don't have this so do I do active system here and now this is that rather that is that I don't think that's the case see oh there we go updating planning item but you didn't exist uh but I didn't log it was creating it so that's probably better let's go back there again let's reset that offset uh consumer groups let's go here update offsets for this back to 183 update commit cannot be completed since the group has already rebalanced and assign the partitions to another member this means the time between subsequent calls to p uh go away it's just Kafka reorganizing his stuff uh partitions offsets repli consumer groups offsets there you go you just got to give it a time for it to settled down a bit so now we got lag 22 so we got 22 messages to process so and that's one of the beauties of tin cka that you can just keep replaying the events pretty simply when this starts up it's always going to start up from the first one but I'm still not seeing creating why am I not seeing creating store ad exists right update at processor oh yeah if it exists um I get the whole employee employe relationship but I'm not about to spend $150 a month on principal just off on the off chance that my employee goes bankrupt or something like the worst they can do is fire me I mean to me I see that as like if I was to try and deploy parts of this right and figure this out the money I spend there is money that I'm trying to invest in myself can I afford it no I can't afford to do that I can't afford the risk of doing that but wouldn't use I wouldn't use any resources of an employer personally I get why you do it I you you've you've uh you've got those resources they're not they're not stingy with them yeah yeah they can claim ownership that's the big risk for me um so if I was to do that if I got any resources given to me and I got them to play with the risk of my employer taking this off me would be uh no not going to happen why is that saying it's uh they can't say that as your um if you use resources of a company to to uh pay for it they do own it your contract probably says it explicitly you're lucky if it doesn't every one of my contracts has basically said if I work on stuff on company time and on company equipment and or on company equipment um it belongs to but they provide the credit right the credit comes from your employer that's yeah yeah is it's semantics it's it's more to me I wouldn't go anywhere near it with a big with a big 10- foot pole I wouldn't be near it um but that's because you know but I've also you know I've long since uh accepted that I'm not going to get any sort of benefits in that in that respect from any employer I've look for if I if I got given the training and the time on on those resources I'd use them for work purposes but uh I would be then I'd be more comfortable paying for it myself as well yeah it's not on company equipment of time yeah but it's on their accounts or it's on accounts that you use so you use the $150 as your credit under your your account not theirs not the account you log into to work for yeah up subscription like complet separate n i mean great I mean it's great you've been able to do that pain in the backside you going have to move it from the subscriptions but um so this works so I can inject the active system so I don't need the con context the context is lost when you use an A asnc so that's going to be a challenge but the problem is I'm calling update all the time I why this up wrong no create act create answer update act update how does data store how can it possibly get in there I never had it oh hold on hold on let's see oh you donkey death again that's um let's remember how language language Works working for like 30ish months so our savings 4500 yeah I mean that's that's stunning but yeah again i' I've got to I've got to figure out how to uh I've been looking at these jobs and and and these net jobs and stuff and there's so many that just oh you need uh three years of card stuff I've definitely uh there we go okay so we're creating the Ping item creating the P it creating the P updating updating creating creating oh how did you hit creating twice there updating updating creating creating wow I didn't I didn't hit creating for the same item more than once it actually tracked them enough to uh even though they they basically stream down at the same time three years of what stuff Cloud oh dude it's so easy you probably know more than you think I probably do and I mean it's scary because a lot of the jobs are like you need to know more about like the deployment side of the cloud stuff if I'm going for a senior uh engineer or staff engineer I should not be worrying about deployment that is not the sort of place you want to go right um I shouldn't have to be the one dealing with the cicd I should understand it but I shouldn't have to be the one dealing with it um so I shouldn't have those expertise um okay yes they're nice to have but I shouldn't know how I shouldn't it shouldn't be required at my job that I know how to do them exactly no not half past 12 it's uh I'm going to have to go soon because I got a what dogs I'm going to get in trouble soon um I don't know I could talk about this forever huh I did exactly what I expected to do I just don't know uh you know I need to know now yeah groups that one update offsets 103 that planning items update no I don't I don't smoke at all I've never ever have never smoked grw up in a smoking smoking household it's uh not something I and that was including cigars and cigarettes all so and pipes it's never really appealed I know what you mean I have a friend who does he uh he has a uh an Indulgence once in a while just it just doesn't appeal to me so what we're going to check now is um we will have to have a conversation in the whole on the whole requirements thing by the way I would I would like to talk about it I just don't I can't can't do it now because I I do really have to consider getting off shortly because I'm going to get in trouble uh the dogs are going to want to go walk and it's halfast 12 um let's go here let's go to the upate upda planning it but yeah I I know what you mean by a proper ofs um it's just never appealed this the smell uh just irks me so again smoking has never been bothered me uh never never been something I wanted to do um okay just going to pretend that nothing exists now or what come on sometimes you get this where Kafka starts up and it's like not going to do anything and then all of a sudden they'll kick into play so if these updates come out in the right order I'll have a little bit more confidence in the processing here because that means that it's actually dealing with the messages as it needs to my concern is if one of them takes a little bit longer what happens to the rest because again I can't receive the update for one um and then receive the update for the other I have to be able to trust it there you go okay so we had creating creating creating creating so we got a bunch of creates oh there we go there's the worst case scenario the exist check didn't come back there it is so it can Collide I mean the good news is in general it dealt with the last updates pretty effectively the last updates are pretty much in sequence except those that one oh no that's correct yeah 10 11 on the 19th 10 10 okay so that's the same 26 636 okay so overall they're not doing too bad they do come out in the right sequence um but we can hit this situation where where we are creating for the exact same GID so what happened there is the messages came through Kafka um both of them got processed by AKA almost at the exact same time actually it happened again up there three times for that one uh for this this first one here AKA got hit by the message from Kafka before it had even finish the exist check the second message had come in hit the exist check it had offloaded them that quick um so all three of them hit the exist check at the same time um before the created happened right so they all got in here they asked they came back nope and hit here so before this is actually finished this piece each one of them had gone through the other Handler so I need like you said Mr R home before I need some sort of corating ID a.net think Kafka yeah so again an an event in Kafka with this with the same ID they're all going to go in the same uh partition um confluent let us know that one so you are guaranteed The Ordering of the events coming out of Kafka the problem is the parallelization of AKA there meant that it processed three events almost in parallel to the point where each one reliable message delivery it's not reli I mean the message deliver is reliable enough that's not the problem um uh do I want correlation state state state I don't want I don't want fin State routers can be deployed in M ways using Cod configuration router is a special type of J to Route messages to other actors called rties different router use different strategies to rout messes effect efficiently routers can be used to inside or outside of an at you can manage the roues yourself or use a self-contained router I mean that's my I mean right now that's kind of what I'm doing I won call it routing NE necessarily dispatchers are responsible scheduling all code that run inside the system dispatches are are one of the most important parts of ar. net they control the throughput and time share for each the access giving each one a fair share of resources by default all to share a single Global dispatcher um and messages arri in the answers mailboxes dispatch so hold on mailboxes in AC mailboxes whole messages def desire for an actor desting for an actor when you send a message to an actor the message doesn't go directly to the actor but goes to the actor's mails until the actor has time to process it a mailbox can be described as a que of messages messages are usually then delivered from the mailbox they act to one at a time in the order they were received but they are implementations like the priority mailbox they can change the order of delivery normally every answer has its own mailbox but this is not a requirement so hold on if it does have a mailbox how am I processing three in parallel like that then if I'm getting the same actor schedule message with that timer persistence clustering is event BS stuff configuration okay well I'm just getting more tired and this is going to get harder to read so challenges challenges are bound but I think it's worth persevering here at the very least what I want to do is I want to get a working prototype up that demonstrates the concepts that I'm trying to go for um M makes you know more streamers at this time of night than I definitely do these days I do not uh retro RPG de nice um sorry join right then oh good no I appreciate it I appreciate you hanging out um I might be back with this tomorrow again because I want to kind of pick up this uh this process I want to try and get into this process before next week because obviously uh I do I do some I am going to keep on The Game Dev uh flow because I think it's it's kind of nice to do the pallet cleans um we're going into late next week I want to do a Q&A day um potentially Friday um because I've got the obviously got the day off um on Friday um so I'm going to open up a the Discord and uh do a Q&A uh use this answer some question questions maybe uh talk about other people's challenges and problems uh so definitely check out the Discord there I'd like to know any feedback or ideas um but the focus tomorrow for me on this path will be can I create a correlation message ID and can I make sure that a a set of actors cannot process a message for the same identifier while they're processing another one is that possible possible so they can process other messages but they can't process this one um how to act as spawn CU if I can do that then I can guarantee the order uh I'm handling events in and I can guarantee that I've got changes um my alternative is to kind of build up a a store of the events and then when it goes quiet fire off a timer right I don't like that idea that's a that's a messy idea um that involves you know basically creating another message Cube and that's horrible so I think it's worth sticking with I I think this will definitely do what I wanted to do I just got to figure out that challenge and then we'll have the uh speed of processing uh to calculate these changes because again the goal is to make it so that the the changes come through get processed and then we can ultimately end on notifications and this is the second part the most important part of demonstrating this system so okay let's uh let's call it here I'll send whoever us left over to uh M makes uh I'm going to head off pretty quickly but uh thank you for joining me I appreciate it um have a great rest of your evening and uh hopefully see you again soon always thank you take care all bye e
Info
Channel: Terry BD
Views: 38
Rating: undefined out of 5
Keywords: Software Development, Web Development, Development, Programming, c#, .net, Blazor, Angular, Kafka
Id: vEHVosSGcec
Channel Id: undefined
Length: 213min 16sec (12796 seconds)
Published: Sun Jun 30 2024
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.