confluent local 질문있습니다.
해결됨
카프카 완벽 가이드 - 코어편
안녕하세요, confluent local도 bin 스크립트를 보니 kafka_server_start가 있고 이를 통해 커뮤니티처럼 멀티 브로커 클러스터를 생성할 수 있는 것이 아닌지 궁금합니다. 또한 실제로 confluent_local을 통해 모니터링 하는 사례가 현업에서 있는지 궁금합니다.
- kafka
- 데이터-엔지니어링
173만명의 커뮤니티!! 함께 토론해봐요.
해결됨
카프카 완벽 가이드 - 코어편
안녕하세요, confluent local도 bin 스크립트를 보니 kafka_server_start가 있고 이를 통해 커뮤니티처럼 멀티 브로커 클러스터를 생성할 수 있는 것이 아닌지 궁금합니다. 또한 실제로 confluent_local을 통해 모니터링 하는 사례가 현업에서 있는지 궁금합니다.
미해결
실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
안녕하세요. 강의 내용과 관련하여 질문이 있어 글 남깁니다. 강의에서 10:00 정도에 변경 감지 방법에 대해 설명하시는 부분입니다. 트랜잭션 상에서 엔티티를 다시 조회하여 내용을 변경하면 이 엔티티는 영속 상태이므로 변경 감지가 된다. 따라서 save() 를 하지않아도 알아서 변경 감지되어 DB에 update된다. 라고 이해했습니다. 제가 궁금한 부분은, itemRepository.findOne(itemId); 부분에서 엔티티를 조회하는데, 이 엔티티는 원래 준영속 상태의 엔티티였고, findOne() 을 함으로써 다시 영속성 컨택스트에 들어온 건가요? 아니면 생성된 때부터 지금까지 죽 영속 상태였나요? 강의의 맥락상, 지금 준영속 객체를 변경하는 방법에 대해 배우고 있으니 전자일 것이라고 생각했습니다. 만약 제가 생각한대로 준영속 상태에서 변경된 것이 맞다면, merge와 역할 자체는 같은게 맞나요? 물론 디테일한 로직이 좀 다르지만, 역할 자체만 보면 merge또한 준영속 객체를 기발으로 영속 객체를 만들어 반환해주는 거고, 변경 감지 기법도 findOne()을 통해 준영속 객체를 영속 객체로 다시 만들어주는 것이니까요. 이 둘의 차이점은 객체가 통째로 갈아치워지느냐, 부분 수정이 가능하냐 이것 정도만 있다, 라고 이해해도 될까요?
미해결
실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
[질문 내용] 여기서 주문상품수량이 10개니 예외가 터지지않고 fail로 가는거로 알고있는데요 Expected jpabook.jpashop.exception.NotEnoughStockException to be thrown, but nothing was thrown 이러한 에러는 뜨는데 예외가 터지지않았기에 fail이 떠야하는데 fail안에 있는 메세지가 안뜹니다 한가지 더 질문이 있씁니다 주문상품수량을 11로 바꿧을떄 마지막에 fail을 적지않고 테스트를 돌렸을땐 예외를 터트려서 테스트가 성공적으로 끝나는데요 여기서 위와같이 fail메서드를 적어도 원래는 위에서 예외가 처리됏기떄문에 테스트가 정상적으로 끝나야 되는게 맞는거 아닌가요? 테스트를 돌렷는데 fail문이 뜹니다 그 뜻은 예외가 터지지않았다는 말이죠.. 의문이 듭니다 도와주세요ㅠㅠ
해결됨
카프카 완벽 가이드 - 코어편
안녕하세요, log dir에 대해 질문이 있습니다. 제가 실습을 하다보니 kafka-logs-0? 디렉토리에 많은 하위 디렉토리들이 생겨서 새로운 실습을 위해 비웠습니다. 기동 중인 모든 브로커에 대한 log dir를 초기화하였는데, 브로커에서 log dir관련 에러로그가 발생한 후 shutdown이 되길래 다시 구동을 시켰습니다. 그리고 각 브로커의 log dir를 다시 확인하니 topic 파티션 dir를 비롯해서 기존 모든 dir가 복원되어있었습니다. 제가 궁금한 점은 카프카 클러스터가 동작하면서 브로커만 있는 것이 아니니 복원 지점이 어디엔가 있을 수 있겠다고 생각은 하였는데, topic-partition의 log들은 replication을 배울 때 혹시 특정 브로커(노드)에 문제가 생길 때를 위한 복제라고 배운 것 같은데, 다른 모든 브로커도 모두 이 정보가 지워진 상태에서 어떻게 복원이 가능했던 걸까요?
미해결
실전! FastAPI 입문
from typing import List from fastapi import FastAPI, Body, HTTPException, Depends from pydantic import BaseModel from sqlalchemy.orm import Session from database.orm import ToDo from database.connection import get_db from database.repository import get_todos from schema.response import ListToDoResponse, ToDoSchema app = FastAPI() @app.get("/") def heath_check_handler(): return {"ping": "pong"} todo_data = { 1: { "id": 1, "contents": "실전! FastAPI 섹션 0 수강", "is_done": True, }, 2: { "id": 2, "contents": "실전! FastAPI 섹션 1 수강", "is_done": False, }, 3: { "id": 3, "contents": "실전! FastAPI 섹션 2 수강", "is_done": False, }, } @app.get("/todos", status_code=200) def get_todos_handler( order: str | None = None, session: Session = Depends(get_db), ) -> ListToDoResponse: todos: List[ToDo] = get_todos(session=session) if order and order == "DESC": return ListToDoResponse( todos=[ToDoSchema.from_orm(todo) for todo in todos[::-1]] ) return ListToDoResponse( todos=[ToDoSchema.from_orm(todo) for todo in todos] ) @app.get("/todos/{todo_id}", status_code=200) def get_todo_handler(todo_id: int): todo = todo_data.get(todo_id) if todo: return todo raise HTTPException(status_code=404, detail="ToDo Not Found") class CreateToDoRequest(BaseModel): id: int contents: str is_done: bool @app.post("/todos", status_code=201) def create_todo_handler(request: CreateToDoRequest): todo_data[request.id] = request.dict() return todo_data[request.id] @app.patch("/todos/{todo_id}", status_code=200) def update_todo_handler( todo_id: int, is_done: bool = Body(..., embed=True) ): todo = todo_data.get(todo_id) if todo: todo["is_done"] = is_done return todo raise HTTPException(status_code=404, detail="ToDo Not Found") @app.delete("/todos/{todo_id}") def delete_todo_handler(todo_id: int): todo = todo_data.pop(todo_id, None) if todo: return raise HTTPException(status_code=404, detail="ToDo Not Found") from typing import List from pydantic import BaseModel class ToDoSchema(BaseModel): id: int contents: str is_done: bool class Config: orm_mode = True class ListToDoResponse(BaseModel): todos: List[ToDoSchema] from typing import List from sqlalchemy import select from sqlalchemy.orm import Session from database.orm import ToDo def get_todos(session: Session) -> List[ToDo]: return list(session.scalars(select(ToDo))) from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker DATABASE_URL = "mysql+pymysql://root:todos@127.0.0.1:3306/todos" engine = create_engine(DATABASE_URL, echo=True) SessionFactory = sessionmaker(autocommit=False, autoflush=False, bind=engine) def get_db(): session = SessionFactory() try: yield session finally: session.close() from sqlalchemy import Boolean, Column, Integer, String from sqlalchemy.orm import declarative_base Base = declarative_base() class ToDo(Base): __tablename__ = 'todo' id = Column(Integer, primary_key=True, index=True) contents = Column(String(256), nullable=False) is_done = Column(Boolean, nullable=False) def __repr__(self): return f"ToDo(id={self.id}, contents={self.contents}, is_done={self.is_done})" 에러가 납니다. 파이썬 콘솔 <input>:1: PydanticDeprecatedSince20: The from_orm method is deprecated; from schema.response import ToDoSchema from datagbase.orm import ToDo Traceback (most recent call last): File "C:\Program Files\JetBrains\PyCharm 2023.3.2\plugins\python\helpers\pydev\pydevconsole.py", line 364, in runcode coro = func() ^^^^^^ File "<input>", line 1, in <module> File "C:\Program Files\JetBrains\PyCharm 2023.3.2\plugins\python\helpers\pydev\_pydev_bundle\pydev_import_hook.py", line 21, in do_import module = self._system_import(name, args, *kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ModuleNotFoundError: No module named 'datagbase' from database.orm import ToDo todo = ToDo(id=100, contents="test", is_done=True) ToDoSchema.from_orm(todo) <input>:1: PydanticDeprecatedSince20: The from_orm method is deprecated; set model_config['from_attributes']=True and use model_validate instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.5/migration/ Traceback (most recent call last): File "C:\Program Files\JetBrains\PyCharm 2023.3.2\plugins\python\helpers\pydev\pydevconsole.py", line 364, in runcode coro = func() ^^^^^^ File "<input>", line 1, in <module> File "C:\Users\manag\pyProject\todos\Lib\site-packages\typing_extensions.py", line 2499, in wrapper return arg(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^ File "C:\Users\manag\pyProject\todos\Lib\site-packages\pydantic\main.py", line 1126, in from_orm raise PydanticUserError( pydantic.errors.PydanticUserError: You must set the config attribute from_attributes=True to use from_orm http://localhost:8000/docs#/default/get_todos_handler_todos_get 접속시 터미널 INFO: 127.0.0.1:56312 - "GET /docs HTTP/1.1" 200 OK INFO: 127.0.0.1:56312 - "GET /openapi.json HTTP/1.1" 200 OK 2024-01-23 16:06:15,108 INFO sqlalchemy.engine.Engine BEGIN (implicit) 2024-01-23 16:06:15,109 INFO sqlalchemy.engine.Engine SELECT todo.id, todo.contents, todo.is_done FROM todo 2024-01-23 16:06:15,109 INFO sqlalchemy.engine.Engine [cached since 826.5s ago] {} 2024-01-23 16:06:15,113 INFO sqlalchemy.engine.Engine ROLLBACK INFO: 127.0.0.1:56312 - "GET /todos HTTP/1.1" 500 Internal Server Error ERROR: Exception in ASGI application Traceback (most recent call last): File "C:\Users\manag\pyProject\todos\Lib\site-packages\uvicorn\protocols\http\h11_impl.py", line 404, in run_asgi result = await app( # type: ignore[func-returns-value] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\manag\pyProject\todos\Lib\site-packages\uvicorn\middleware\proxy_headers.py", line 84, in call return await self.app(scope, receive, send) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\manag\pyProject\todos\Lib\site-packages\fastapi\applications.py", line 1054, in call await super().__call__(scope, receive, send) File "C:\Users\manag\pyProject\todos\Lib\site-packages\starlette\applications.py", line 123, in call await self.middleware_stack(scope, receive, send) File "C:\Users\manag\pyProject\todos\Lib\site-packages\starlette\middleware\errors.py", line 186, in call raise exc File "C:\Users\manag\pyProject\todos\Lib\site-packages\starlette\middleware\errors.py", line 164, in call await self.app(scope, receive, _send) File "C:\Users\manag\pyProject\todos\Lib\site-packages\starlette\middleware\exceptions.py", line 62, in call await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send) File "C:\Users\manag\pyProject\todos\Lib\site-packages\starlette\_exception_handler.py", line 64, in wrapped_app raise exc File "C:\Users\manag\pyProject\todos\Lib\site-packages\starlette\_exception_handler.py", line 53, in wrapped_app await app(scope, receive, sender) File "C:\Users\manag\pyProject\todos\Lib\site-packages\starlette\routing.py", line 762, in call await self.middleware_stack(scope, receive, send) File "C:\Users\manag\pyProject\todos\Lib\site-packages\starlette\routing.py", line 782, in app await route.handle(scope, receive, send) File "C:\Users\manag\pyProject\todos\Lib\site-packages\starlette\routing.py", line 297, in handle await self.app(scope, receive, send) File "C:\Users\manag\pyProject\todos\Lib\site-packages\starlette\routing.py", line 77, in app await wrap_app_handling_exceptions(app, request)(scope, receive, send) File "C:\Users\manag\pyProject\todos\Lib\site-packages\starlette\_exception_handler.py", line 64, in wrapped_app raise exc File "C:\Users\manag\pyProject\todos\Lib\site-packages\starlette\_exception_handler.py", line 53, in wrapped_app await app(scope, receive, sender) File "C:\Users\manag\pyProject\todos\Lib\site-packages\starlette\routing.py", line 72, in app response = await func(request) ^^^^^^^^^^^^^^^^^^^ File "C:\Users\manag\pyProject\todos\Lib\site-packages\fastapi\routing.py", line 299, in app raise e File "C:\Users\manag\pyProject\todos\Lib\site-packages\fastapi\routing.py", line 294, in app raw_response = await run_endpoint_function( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\manag\pyProject\todos\Lib\site-packages\fastapi\routing.py", line 193, in run_endpoint_function return await run_in_threadpool(dependant.call, **values) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\manag\pyProject\todos\Lib\site-packages\starlette\concurrency.py", line 40, in run_in_threadpool return await anyio.to_thread.run_sync(func, *args) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\manag\pyProject\todos\Lib\site-packages\anyio\to_thread.py", line 56, in run_sync return await get_async_backend().run_sync_in_worker_thread( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\manag\pyProject\todos\Lib\site-packages\anyio\_backends\_asyncio.py", line 2134, in run_sync_in_worker_thread return await future ^^^^^^^^^^^^ File "C:\Users\manag\pyProject\todos\Lib\site-packages\anyio\_backends\_asyncio.py", line 851, in run result = context.run(func, *args) ^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\manag\pyProject\todos\src\main.py", line 48, in get_todos_handler todos=[ToDoSchema.from_orm(todo) for todo in todos] ^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\manag\pyProject\todos\Lib\site-packages\typing_extensions.py", line 2499, in wrapper return arg(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^ File "C:\Users\manag\pyProject\todos\Lib\site-packages\pydantic\main.py", line 1126, in from_orm raise PydanticUserError( pydantic.errors.PydanticUserError: You must set the config attribute from_attributes=True to use from_orm
미해결
자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
post방식은 dto 객체 앞에 @RequestBody가 있는데 get방식은 왜 dto객체 앞에 @RequestParam을 안 써요? 맨 처음에 dto 객체 없었을 때 매개변수 이용하였을 때는 @RequestParam 썼던 것 같은데..
미해결
카프카 완벽 가이드 - 코어편
안녕하세요, 동일 groupId를 가진 두 개의 컨슈머가 하나의 토픽에 대해 poll을 하는데, 컨슈머 중 하나는 0번 파티션을 읽도록 assign하였고 나머지 컨슈머는 그냥 토픽에 대해 subscribe를 하였습니다. 그런데 0번 파티션에 assign한 컨슈머는 데이터를 읽어오지 못하고 아래와 같은 에러 로그가 발생하였는데요 Commit cannot be completed since the group has already rebalanced and assigned the partitions to another member 이 경우는 어떻게 해석하는게 좋을까요?
미해결
Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
해당 예제를 통해 주키퍼를 먼저 실행을 해볼려하지만 계속해서 해당 classpath를 찾지 못하고 있습니다. 비슷한 상황을 겪은 사람들의 경우 바이너리 파일이 아닌 소스 파일을 다운 받아 해당 문제를 겪었다고 했지만 저의 경우 알맞은 파일을 설치하여 압축을 해제하였는데 어떤게 원인일까요
미해결
실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 이 과정에서 jdbc:h2:~/jpashop까지 입력을 완료하고 데이터베이스가 잘 생성이 되었는데 ~ /jpashop.m v.db이 어디에 생성된건지 모르겠습니다. ~ /jpashop.m v.db
미해결
카프카 완벽 가이드 - 코어편
안녕하세요. confluent kafka 에서 consumer 뛰운 상태 입니다. SimpleProducer.java 작성 후, Run 하면 아래 로그 발생 합니다. SLF4J(W): No SLF4J providers were found. consumer에서 메시지 출력 하지 않습니다. 검색해 보니, This warning , i.e. not an error, message is reported when no SLF4J providers could be found on the class path. Placing one (and only one) of the many available providers such as slf4j-nop.jar slf4j-simple.jar , slf4j-reload4j.jar , slf4j-jdk14.jar or logback-classic.jar on the class path should solve the problem. 어디를 수정 해서, 적용 해야 할지 잘 모르겠습니다. 강의 내용 따라서, Gradle 설정 하고, jdk를 확인 해보니, 17 oracle jdk 가 보이지 않아, jbrskd-17로 설정해서 빌드 했습니다. (제 intellij에서 add > oracle 17jdk가 안 보입니다???) 검토 하시고 답변 부탁 드립니다.
미해결
Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
좋은강의 잘듣고있습니다! 다름아니라 현재 싱크 커넥터등록후 DB에 데이터가 등록되지 않고 있습니다. 먼저 아래사진처럼 post요청을 통해 커넥터 등록을 하였습니다. 토픽은 예제를 똑같이 따라하였을 때도 안되었어서 my-topic-orders로 새로 바꿔서 등록하였습니다. 이에 맞게 테이블도 아래 사진처럼 생성하였습니다. post요청을 한 후 주문이 해당 토픽으로 전달했음에도 아래 사진처럼 DB에 적용이 되지않아 어디가 문제일지 커뮤니티를 뒤져도 잘모르겠어서 질문드립니다 ㅠㅠ (토픽도 "my_topic_orders"로 지정하였습니다.) 현재 커넥터 등록상태입니다. 추가로 kafka confluent에서 발생한 로그입니다
미해결
자바 ORM 표준 JPA 프로그래밍 - 기본편
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 값타입 @MappedSuperclass의 차이가 무엇인가요? BaseEntity를 @MappedSuperclass로 놓고 상속받아서 여러 속성을 한꺼번에 갖는것과 값타입 클래스를 @Embeddable로 설정해서 위임하는 것의 차이가 궁금합니다. 둘다 여러 속성들을 동시에 관리해서 다른 테이블의 속성으로 사용하기 위한 목적이라면 하나만 있으면 될 것 같은데, 왜 굳이 2개 모두 필요한가요?
미해결
자바 ORM 표준 JPA 프로그래밍 - 기본편
안녕하세요. 기본 키 맵핑에서 GenerationType.IDENTITY 관련 부분 질문드립니다. GenerationType.IDENTITY는 PK를 입력하지 않아도 auto increment라고 해서 저절로 생성되는 거 아닌가요? 그런데 이런 에러가 떴습니다. ERROR: NULL not allowed for column "ID"; SQL statement: 답변 부탁드리겠습니다. 감사합니다! package hellojpa; import javax.persistence.*; @Entity public class Member { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(name = "name") private String username; public Member() { // 기본 생성자가 하나 있어야 함 } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } } package hellojpa; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.EntityTransaction; import javax.persistence.Persistence; import javax.transaction.Transaction; public class JpaMain { public static void main(String[] args) { EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); // EntityManagerFactory는 application 로딩 시점에 딱 하나만 만들어놔야 한다. // Transaction 단위로 EntityManager를 만든다. EntityManager em = emf.createEntityManager(); // 쉽게 생각하면 데이터베이스 connection을 하나 받았다고 생각할 수 있음. EntityTransaction tx = em.getTransaction(); tx.begin(); try{ Member member = new Member(); member.setUsername("Opeahchsdf"); em.persist(member); tx.commit(); } catch (Exception e) { tx.rollback(); } finally { em.close(); // 끝나면 반드시 닫아줘야 함 } emf.close(); } } <?xml version="1.0" encoding="UTF-8"?> <persistence version="2.2" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_2.xsd"> <persistence-unit name="hello"> <properties> <!-- 필수 속성 --> <property name="javax.persistence.jdbc.driver" value="org.h2.Driver"/> <property name="javax.persistence.jdbc.user" value="sa"/> <property name="javax.persistence.jdbc.password" value=""/> <property name="javax.persistence.jdbc.url" value="jdbc:h2:tcp://localhost/~/test"/> <property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/> <!-- 옵션 --> <property name="hibernate.show_sql" value="true"/> <property name="hibernate.format_sql" value="true"/> <property name="hibernate.use_sql_comments" value="true"/> <property name="hibernate.hbm2ddl.auto" value="create" /> </properties> </persistence-unit> </persistence>
해결됨
카프카 완벽 가이드 - 코어편
안녕하세요, 프로듀서 전송 부분에 대해 강의를 듣던 중 궁금한 점이 있습니다. 최대 한 번 전송 외에는 ack를 받고 다음 메시지를 전송한다고 설명하셨는데, 비동기 전송은 ack와 상관 없이 지속적으로 메시지를 전송할 수 있는거 아닌가요? 메시지 a,b,c 3개를 보낸다고 했을 때 ack = 0의 경우는 a,b,c를 보내고 오는 ack에 대해 신경 쓰지 않는것이고, ack != 0의 경우 비동기라면 마찬가지로 전송은 ack 여부와 상관 없이 a,b,c를 보내고 대신 ack 여부에 따라 특정 메시지에 대한 재전송이 이루어 지는 것이 아닌지 궁금합니다. 즉, ack 여부에 따라 a이후 b를 전송하는 것이 결정되는게 맞는지 궁금합니다.
미해결
카프카 완벽 가이드 - ksqlDB
안녕하세요. 저는 1년차 개발자 입니다. 현재는 회사를 그만 두고 공부를 마치고 취업 준비를 하고 있습니다. 권철민 개발자님의 강의를 접하고 너무 좋아서, kafka 3개의 모두 수강하고 마지막 강의를 듣고 있습니다. 지식을 모두에거 공유한다는 것이 너무 존경스럽고 개발자가 가져야하는 자세와 덕목이라 생각하고 배우게 되었습니다. 감사합니다. 실무에서 실제로 사용 하고 싶어서 집에서 AWS에 환경을 구축 해보고 싶습니다. 하지만 비용이 청구 된다는 것에 두려움을 가지고 있습니다. AWS는 실제로 한번도 없지만 클라우드 환경에 대한 선수 지식과 AWS사용 법등은 숙지하고 있지만, 비용적인 측면에서 기술을 사용하는데 있어 비용이 어떤 정책으로 측정 되는지 알고 있는게 없어 너무 걱정입니다. confluent kafka 와 apache kafka 사용법에 차이는 별로 없다고 하셧지만, 그래도 배운 confluent kafka로 aws를 구축 하고 싶은 마음이지만 몇가지 궁금 한게 있습니다. 현재 현업에서는 confluent kafka 와 apache kafka 둘 중 어떤것이 많이 사용되며, 선호 되는 것이 어떤건가요? 현업에서는 실제로 구축한다면, 강의에서와 같이 Ubuntu AWS에서 만들어서,kafka를 설치하여 사용 하나요? 아니면 제공 되어지는 Saas를 통해 사용하나요? 보통 어떤것을 사용하나요? 아니면 다른 방법이 있나요? 실무에서 사용 하려면 kafka가 무료가 아니라고 알고 있습니다. confluent kafka 와 apache kafka 둘다 무료가 아닌건가요? AWS사용 비용외 별도 비용을 지불 하고 사용 해야 하는 건가요?, 아니면 Saas를 사용하면 AWS비용을 포함하여 비용이 청구 되나요? confluent kafka 와 apache kafka 둘다 똑같은 환경을 구축 한다면, 비용적 측면에서 어떤것이 저렴 한가요? 아니면 걱정 할 정도의 비용 차이가 나지 않는 건가요? 실제 현업에서 어느 정도 규모에서 사용 되며, 작은 규모, 중간 규모, 큰 규묘 에서 대략 비용이 대략 한달 얼마 정도 청구 되나요? 급하게 두서 없이 작성한거 같네요. 긴 글 읽어 주셔서 감사합니다.
해결됨
실전! 스프링 데이터 JPA
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] 여기에 질문 내용을 남겨주세요. 안녕하세요 영한님. 이번 강의도 잘 수강한 학생입니다. 강의 내용과 공식 문서를 참고하며 간단한 게시글 리포지토리를 만들어보고자, 아래처럼 작성했었습니다. public interface BoardRepository { Long save(final Board board); ... } @Repository @RequiredArgsConstructor public class BoardJpaRepositoryImpl implements BoardRepository { private final BoardJpaRepository boardJpaRepository; ... } public interface BoardJpaRepository extends JpaRepository<Board, Long> { } 강의 내용대로 스프링 데이터 JPA인 BoardJpaRepository에 Impl을 붙인 BoardJpaRepositoryImpl을 만들었는데, 아래와 같이 순환 참조 문제가 발생했습니다. The dependencies of some of the beans in the application context form a cycle: boardController defined in file [/Users/hyunjoonchoi/Desktop/2024/2024-mju-mentoring/build/classes/java/main/com/mju/mentoring/board/controller/BoardController.class] ↓ boardService defined in file [/Users/hyunjoonchoi/Desktop/2024/2024-mju-mentoring/build/classes/java/main/com/mju/mentoring/board/service/BoardService.class] ┌─────┐ | boardJpaRepositoryImpl defined in file [/..../build/classes/java/main/com/mju/mentoring/board/infrastructure/BoardJpaRepositoryImpl.class] └─────┘ Action: Relying upon circular references is discouraged and they are prohibited by default. Update your application to remove the dependency cycle between beans. As a last resort, it may be possible to break the cycle automatically by setting spring.main.allow-circular-references to true. 그런데 이름을 BoardRepositoryImpl, JpaBoardRepositoryImpl 등 다른 이름으로 하니까 순환 참조 문제가 해결되더라구요 이에 대해서 다른 외국 개발자 분들도 이슈로 올리고, 그것들을 찾아봤으나 메인테이너 분이 @Lazy를 사용하거나 ObjectProvider를 사용해야 한다고 말씀해주시는 것 밖에 없었습니다. 공식 문서 ( https://docs.spring.io/spring-data/jpa/docs/1.5.0.RELEASE/reference/html/repositories.html#repositories.create-instances )를 보면 스프링 데이터 JPA + Impl로 할 시 자동으로 스프링 데이터 JPA의 구현체로 인식한다고 되어 있는 것 같은데, 이런 순환 참조 이슈가 발생한 원인을 알 수 있을까요? 이를 해결해보고자 스프링 데이터 JPA 레포지토리에 직접 이슈로 남기고 ( https://github.com/spring-projects/spring-data-jpa/issues/3320 ) 답변을 받았긴 했습니다만, 여전히 다른 이야기를 하시는 것 같아 영한 님께도 문의드리고 싶습니다!
미해결
카프카 완벽 가이드 - 코어편
안녕하세요, 인텔리제이에서 클라이언트 프로듀서 생성 후 데이터 전송 시 브로커를 찾을 수 없다는 에러 로그가 자꾸 발생해서, server.properties 의 advertised.listeners에서 저희가 사용하는 고정 IP를 직접 작성해주니 해결되었는데요, 이렇게 하니 외부 클라이언트에서 192.168.56.101 주소로 전송한 데이터는 VM에서 콘솔 컨슈머를 통해 read 할 때 localhost 로 접근 시 조회가 되지 않습니다. 혹시 Host PC에서 VM의 브로커에 send 할 때 advertised.listeners 값을 고정 IP로 등록해주어야 하는 이유가 있는지, 그리고 이렇게 등록 시 VM 내부에서도 localhost 참조가 불가능해지는게 맞는지 알 수 있을까요?
미해결
카프카 완벽 가이드 - 코어편
안녕하세요, producer의 send 로직을 보면 Serialization을 먼저 수행하고 Partitioner에서 파티션을 결정 짓는것으로 보이는데요, key 값이 존재하는 경우 key 값에 대한 hash 알고리즘을 통해 파티셔너에서 파티션을 결정한다고 하였는데 직렬화 되어버리면 hash는 bytes 값에 대한 hash가 수행되는 건가요?? 만약 맞다면, 파티셔너도 특정 키를 가진 데이터에 대해서 원하는 파티션을 지정하도록 커스터마이징이 가능한 것으로 알고 있는데, 파티셔너를 커스터마이징한다면 key 값을 직렬화 하고 그것에 대한 해시알고리즘을 적용해서 파티션 넘버를 반환하도록 짜야하는 것인지 궁금합니다.
미해결
java spring 을 사용하려고합니다 근데 이때
미해결
[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
안녕하세요. 수업 잘 듣고 있습니다. 다름이 아니라, 카프카 수업을 듣고, 영상을 카프카로 넘겨서 다시 웹으로 받는 작업을 테스트 하고 있습니다. 그런데 캠cam을 연결할 때는 제대로 데이터가 잘 넘어가서 잘 보여지는데, rtmp와 같은 미디어 서버에서 받은 영상 정보를 카프카로 넘기면 영상이 진행이 안되고, 계속 1초 전으로 되돌아가는 이상한 현상이 발생합니다. 마치 재생을 시켰더니 다시 처음부터 재생하는 느낌... 이 해결을 위해서 카프카 설정을 만져야 하는지 프로듀서 쪽을 건들어야 할 지 감이 안 와서 질문 드립니다. 감사합니다.